{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "241df33e",
   "metadata": {},
   "source": [
    "# Simple keyword spotting with CMSIS-DSP Python wrapper and Arduino"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3652bb1c",
   "metadata": {},
   "source": [
    "The goal of this notebook is to demonstrate how to use the CMSIS-DSP Python wrapper on an example which is complex enough.\n",
    "\n",
    "It is not a state of the art keyword recognition system. The feature used for the machine learning is very simple and just able to recognize the \"Yes\" keyword.\n",
    "\n",
    "But it is a good start and enough to demonstrate lots of features of the Python wrapper like:\n",
    "\n",
    "* Testing the CMSIS-DSP algorithm directly in Python\n",
    "* Test of fixed point implementation\n",
    "* Implementation of the compute graph and streaming computation from the CMSIS-DSP Synchronous Data Flow framework\n",
    "* C++ code generation for the compute graph\n",
    "* Final implementation for Arduino Nano 33 BLE"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "23aa0adb",
   "metadata": {},
   "source": [
    "Several Python packages are required. If they are not already installed on you system, you can install them from the notebook by using:\n",
    "\n",
    "`!pip install packagename`\n",
    "\n",
    "The machine learning is using scikit-learn. For scientific computations, we are using SciPy, NumPy and Matplotlib.\n",
    "\n",
    "For reading wav files, the soundfile package is used.\n",
    "\n",
    "Other packages will be used below in the notebook and will have to be installed."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "d8ef4050",
   "metadata": {
    "scrolled": true
   },
   "outputs": [],
   "source": [
    "import cmsisdsp as dsp\n",
    "import cmsisdsp.fixedpoint as fix\n",
    "import numpy as np\n",
    "import os.path\n",
    "import glob\n",
    "import pathlib\n",
    "import random\n",
    "import soundfile as sf\n",
    "import matplotlib.pyplot as plt\n",
    "from IPython.display import display,Audio,HTML\n",
    "import scipy.signal\n",
    "from numpy.lib.stride_tricks import sliding_window_view\n",
    "from scipy.signal.windows import hann\n",
    "from sklearn import svm\n",
    "from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import RandomizedSearchCV\n",
    "from scipy.stats import uniform\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "import pickle"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5b7926c9",
   "metadata": {},
   "source": [
    "## The speech commands\n",
    "\n",
    "We are using the simplified speech commands from the TensorFlow Lite tutorial.\n",
    "\n",
    "Those commands can be downloaded from this link: \"http://storage.googleapis.com/download.tensorflow.org/data/mini_speech_commands.zip\"\n",
    "\n",
    "Once the zip has been uncompressed, you'll need to change the path of the folder below."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "352220f9",
   "metadata": {},
   "source": [
    "The below code is loading the list of commands available in the `mini_speech_commands` folder and it is describing the words we want to detect. Here we only want to detect the `Yes` keyword.\n",
    "\n",
    "You can add other keywords but the CMSIS-DSP implementation in this notebook is only supporting one keyword.\n",
    "Nevertheless, if you'd like to experiment with the training of the ML model and different features, then you can work with more commands."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "3fb202b4",
   "metadata": {},
   "outputs": [],
   "source": [
    "MINISPEECH=\"C:/Users/chrfav01/benchresults/mini_speech_commands\"\n",
    "commands=np.array([os.path.basename(f) for f in glob.glob(os.path.join(MINISPEECH,\"mini_speech_commands\",\"*\"))])\n",
    "commands=commands[commands != \"README.md\"]\n",
    "# Any other word will be recognized as unknown\n",
    "to_keep=['yes']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "13d40376-3b7b-4b7d-bcae-60c412986d7a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(8,)"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "commands.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3bc4b610",
   "metadata": {},
   "source": [
    "The below code is generating a label ID for a command. The ID will be -1 for any command not in the `to_keep` list. Other ID will be the index of the keyword in this list."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "9df05672",
   "metadata": {},
   "outputs": [],
   "source": [
    "UNKNOWN_CLASS = -1\n",
    "def get_label(name):\n",
    "    return(pathlib.PurePath(name).parts[-2])\n",
    "def get_label_id(name):\n",
    "    label=get_label(name)\n",
    "    if label in to_keep:\n",
    "        return(to_keep.index(label))\n",
    "    else:\n",
    "        return(UNKNOWN_CLASS)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7cf6b745",
   "metadata": {},
   "source": [
    "## The feature\n",
    "\n",
    "The feature is based on a simple zero crossing rate (zcr). We choose to only keep the increasing crossing. I don't think it is making a lot of differences for the final performance of the keyword recognition.\n",
    "\n",
    "The `zcr` function is computing the zcr for a window of samples."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "f24e5b4c",
   "metadata": {},
   "outputs": [],
   "source": [
    "def zcr(w):\n",
    "    w = w-np.mean(w)\n",
    "    f=w[:-1]\n",
    "    g=w[1:]\n",
    "    k=np.count_nonzero(np.logical_and(f*g<0, g>f))\n",
    "    return(1.0*k/len(f))\n",
    "        "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a218c0e5",
   "metadata": {},
   "source": [
    "The final feature is the zcr computed on a segment of 1 second and filtered. We are using a sliding window and using a Hann window."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "4dc76d14",
   "metadata": {},
   "outputs": [],
   "source": [
    "def feature(data):\n",
    "    samplerate=16000\n",
    "    input_len = 16000\n",
    "    \n",
    "    # The speech pattern is padded to ensure it has a duration of 1 second\n",
    "    \n",
    "    waveform = data[:input_len]\n",
    "    \n",
    "    zero_padding = np.zeros(\n",
    "      16000 - waveform.shape[0],\n",
    "      dtype=np.float32)\n",
    "   \n",
    "   \n",
    "    signal = np.hstack([waveform, zero_padding])\n",
    "    \n",
    "    \n",
    "    # We decompose the intput signal into overlapping window. And the signal in each window\n",
    "    # is premultiplied by a Hann window of the right size.\n",
    "    # Warning : if you change the window duration and audio offset, you'll need to change the value\n",
    "    # in the scripts used for the scheduling of the compute graph later.\n",
    "    winDuration=25e-3\n",
    "    audioOffsetDuration=10e-3\n",
    "    winLength=int(np.floor(samplerate*winDuration))\n",
    "    audioOffset=int(np.floor(samplerate*audioOffsetDuration))\n",
    "    overlap=winLength-audioOffset\n",
    "    window=hann(winLength,sym=False)\n",
    "    reta=[zcr(x*window) for x in sliding_window_view(signal,winLength)[::audioOffset,:]]\n",
    "    \n",
    "    # The final signal is filtered. We have tested several variations on the feature. This filtering is\n",
    "    # improving the recognition\n",
    "    reta=scipy.signal.lfilter(np.ones(10)/10.0,[1],reta)\n",
    "    return(np.array(reta))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "40b040df",
   "metadata": {},
   "source": [
    "## The patterns\n",
    "\n",
    "The below class is representing a Pattern. A pattern can either be a sound file from the TensorFlow Lite examples and in this case we compute the feature and the label id.\n",
    "\n",
    "The pattern can also be a random white noise. In that case, we also compute the feature and the class id is -1.\n",
    "\n",
    "Note that when you use the signal property, the speech patterns will return the content of the file but noise patterns will generate a random noise which will thus be different each time."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "279b0999",
   "metadata": {},
   "outputs": [],
   "source": [
    "class Pattern:\n",
    "    def __init__(self,p):\n",
    "        global UNKNOWN_CLASS\n",
    "        if isinstance(p, str):\n",
    "            self._isFile=True \n",
    "            self._filename=p\n",
    "            self._label=get_label_id(p)\n",
    "    \n",
    "            data, samplerate = sf.read(self._filename)\n",
    "            self._feature = feature(data)\n",
    "        else:\n",
    "            self._isFile=False\n",
    "            self._noiseLevel=p\n",
    "            self._label=UNKNOWN_CLASS\n",
    "            \n",
    "            noise=np.random.randn(16000)*p\n",
    "            self._feature=feature(noise)\n",
    "            \n",
    "    @property\n",
    "    def label(self):\n",
    "        return(self._label)\n",
    "            \n",
    "    @property\n",
    "    def feature(self):\n",
    "        return(self._feature)\n",
    "        \n",
    "        \n",
    "    # Only useful for plotting\n",
    "    # The random pattern will be different each time\n",
    "    @property\n",
    "    def signal(self):\n",
    "        if not self._isFile:\n",
    "            return(np.random.randn(16000)*self._noiseLevel)\n",
    "        else:\n",
    "            data, samplerate = sf.read(self._filename)\n",
    "            return(data)\n",
    "        "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "099433f6",
   "metadata": {},
   "source": [
    "Following code is giving the number of speech samples for each keyword.\n",
    "It is assuming that all keywords contain the same number of samples."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "79588da0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1000"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "files_per_command=len(glob.glob(os.path.join(MINISPEECH,\"mini_speech_commands\",commands[0],\"*\")))\n",
    "files_per_command"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bb329acb",
   "metadata": {},
   "source": [
    "The following code is generating the patterns used for the training of the ML model.\n",
    "It is reading patterns for all the words we want to keep (from `to_keep` list) and it is aggregating all other keywords in the unknown class.\n",
    "\n",
    "It is also generating some random noise patterns.For the unknown class, the number of patterns will always be `files_per_command` but some patterns may be noise rather than sound files.\n",
    "\n",
    "There is some randomization of file names. So each time this code is executed, you'll get patterns in a different order and for the unknown class, which is containing more than `files_per_command`, you'll get a different subset of those patterns (thr subset will have the right length `files_per_command`).\n",
    "\n",
    "Finally the patterns are also randomized so that the split between training and test patterns will select different patterns each time this code is executed."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "e4e8bf7d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Add patterns we want to detect\n",
    "filenames=[]\n",
    "for f in to_keep:\n",
    "    filenames+=glob.glob(os.path.join(MINISPEECH,\"mini_speech_commands\",f,\"*\"))\n",
    "\n",
    "    \n",
    "random.shuffle(filenames)\n",
    "    \n",
    "# Add remaining patterns\n",
    "remaining_words=list(set(commands)-set(to_keep))\n",
    "nb_noise=0\n",
    "\n",
    "remaining=[]\n",
    "for f in remaining_words:\n",
    "    remaining+=glob.glob(os.path.join(MINISPEECH,\"mini_speech_commands\",f,\"*\"))\n",
    "    \n",
    "random.shuffle(remaining)\n",
    "\n",
    "\n",
    "filenames += remaining[0:files_per_command-nb_noise]\n",
    "\n",
    "patterns=[Pattern(x) for x in filenames]\n",
    "\n",
    "for i in range(nb_noise):\n",
    "    patterns.append(Pattern(np.abs(np.random.rand(1)*0.05)[0]))\n",
    "    \n",
    "random.shuffle(patterns)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cc8b0033",
   "metadata": {},
   "source": [
    "Below code is extracting the training and test patterns.\n",
    "This will be used later to generate the array used by scikit learn to train the model."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "e9ebb293",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2000\n"
     ]
    }
   ],
   "source": [
    "print(len(patterns))\n",
    "patterns=np.array(patterns)\n",
    "\n",
    "nb_patterns = len(patterns)\n",
    "nb_train= int(np.floor(0.8 * nb_patterns))\n",
    "nb_tests=nb_patterns-nb_train\n",
    "\n",
    "train_patterns = patterns[:nb_train]\n",
    "test_patterns = patterns[-nb_tests:]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bab9b1d2",
   "metadata": {},
   "source": [
    "## Testing on a signal\n",
    "\n",
    "The following code is displaying a pattern as example."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "b298cfea",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGdCAYAAADaPpOnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA9oUlEQVR4nO3deXxU9b3/8fdkTyALEJIQCAZkCQiCsglutUZRqEvVipYqUqtXKyriRaVWsfXXQtUqar2g1qW9VbH2uhUtiGyKRvZFVgHZBJIAIQsJZJvv74/IMCOTTJaZOXMmr+fjkccjOevnm2Xmne/5nu9xGGOMAAAAbCLC6gIAAACagvACAABshfACAABshfACAABshfACAABshfACAABshfACAABshfACAABsJcrqAvzN6XRq//79SkxMlMPhsLocAADQCMYYlZWVKTMzUxERDfethF142b9/v7KysqwuAwAANMPevXvVpUuXBrcJu/CSmJgoqa7xSUlJFlcDAAAao7S0VFlZWa738YaEXXg5cakoKSmJ8AIAgM00ZsgHA3YBAICtEF4AAICtEF4AAICtEF4AAICtEF4AAICtEF4AAICtEF4AAICtEF4AAICtEF4AAICtEF4AAICtEF4AAICtEF4AAICtEF4A2E7JsWqVHa/W9sIyvfzZtzpeXWt1SQCCKOyeKg0gvFXW1GrA7z7xWFZWWaNJl/SyqCIAwUbPCwBbOVhWecqyNXuOWFAJAKsQXgAAgK0QXgDYisPhOGWZMRYUAsAyhBcAAGArhBcAAGArhBcAtmfEdSOgNSG8ALCFY1W1emPZbuWXHLe6FAAWY54XALbwp7lb9PqXu6wuA0AIoOcFgC0s3lpY7zruNgJaF8ILAFvwdos0gNaJ8ALAFoguAE4gvACwhwbSC5eNgNaF8AIAAGyF8ALAFhq6bMQ8L0DrQngBYAsNDdg9Vu3U43M2adm3h4NYEQCrEF4A2EJDPS/r9hbrlaU7Nealr4JWDwDrEF4AhLyaWqe4UxrACcywCyCkTf1gg2av2KvoSP7XAlCH8AIgpP0tb7ckqbLGaXElAEIF/8oAAABbIbwAAABbIbwAAABbIbwAAABbIbwAAABbIbwAAABbIbwAAABbIbwAAABbIbwAAABbIbwAAABbIbwAAABbIbwAAABbIbwAAABbIbwAAABbIbwAAABbIbwAAABbIbwAAABbIbwAAABbIbwAAABbIbwAAABbIbwAaDWOVtZoweYCVdbUasO+Eh0oOWZ1SQCaIcrqAgAgWO7431Vauv2QLujVUZ99c1CStGv6aIurAtBUhBcAIckY4/djLt1+SJJcwQWAPRFeAIScmlqnrvjLF8pMjmvyvgu3FGj34QqNP7dbACoDEAoILwBCzsb9pdp8oO6jqX75+kpJ0tld22lAVookqbiiSg6Hw+v2G/aV6N/r9mvCj3soMS662TUDCB7CC4CQE1FP0GiK/NLjGiCpqsapgb+fX+92P3l+qaS6wbwPXZ6jhJgoRUa0/PwAAicodxu98MILys7OVlxcnIYNG6bly5c3ar/Zs2fL4XDo6quvDmyBAEKKH7KLS1F5VaO2W7z1oPo/9omunfml/04OICACHl7efvttTZo0SVOnTtXq1as1YMAAjRw5UoWFhQ3ut2vXLv33f/+3zj///ECXCCDE+CO8OJ1GeTsO63h1baO231dcd9v02r3FLT85gIAKeHh5+umnddttt2n8+PHq27evZs2apYSEBL366qv17lNbW6uxY8fqd7/7nbp37x7oEgGEoac+2aobX/5KE95abXUpAPwsoOGlqqpKq1atUm5u7skTRkQoNzdXeXl59e73+9//Xmlpabr11lt9nqOyslKlpaUeHwCw42C5JGnDPl4TgHAT0PBy6NAh1dbWKj093WN5enq68vPzve6zdOlSvfLKK3r55ZcbdY5p06YpOTnZ9ZGVldXiugEAQOgKqccDlJWV6aabbtLLL7+s1NTURu0zZcoUlZSUuD727t0b4CoBAICVAnqrdGpqqiIjI1VQUOCxvKCgQBkZGadsv2PHDu3atUtXXHGFa5nT6awrNCpKW7du1emnn+6xT2xsrGJjYwNQPYDW6p8r9+ofX+3WSzcNVkYzJsoDEFgB7XmJiYnRoEGDtGDBAtcyp9OpBQsWaPjw4adsn5OTo6+//lpr1651fVx55ZW66KKLtHbtWi4JAQiKB/61Xuu/K9G0/2y2uhQAXgR8krpJkyZp3LhxGjx4sIYOHaoZM2aovLxc48ePlyTdfPPN6ty5s6ZNm6a4uDj169fPY/+UlBRJOmU5AARaeWWN1SUA8CLg4WXMmDE6ePCgHn30UeXn52vgwIGaO3euaxDvnj17FBERUkNvAABACHOYQDy61UKlpaVKTk5WSUmJkpKSrC4HQDNs3F+i0c8ttboM5fZJ01/HDbG6DKBVaMr7N10eAFCP8PrXDggfhBcAAGArPFUaQMgorqjSXz/fqZxOiVaXIkmi4wUITYQXACHj4fc26KOvD1hdBoAQx2UjACFj9Z4jVpcAwAYILwBChsPqAn4gzG7GBMIG4QUA6uEeXWpqndpbVGFZLQBOIrwAQD2qapyuz8e/vkLnP7FIn24qaGAPAMFAeAEQMhyO0Lpw9OWOw64A8/m2Q5Kkv+Xt0q5D5So9Xm1laUCrRngBgAbsKSr3+HpH4VH96KnFGvL/PrWoIgCEFwBowJPztmrhlpOXivaXHJckVbpdUgIQXMzzAgANmLexQPM2+h7nUnKsWrFREYqLjgxCVUDrRs8LgJARYkNeGq2koloDfveJzpm2QNLJgb6///cmPTF3i5WlAWGJnhcAaKb13xVrxa4j6pwSL0kqrqjW/+bt0iMfbNQfftpPr36xU5J0z8U96ZEB/IjwAsBy/163X3PW71d5ZY3VpTTJlX/5QpJ0esc2rmWPfLBRUt2jDk5grjvAvwgvACx391trrC6hRXYcLPe9EQC/YcwLAASY4fnUgF8RXgAgBBljdKDkGM9XArwgvABACPqfxTs0fNpCPbdgu9WlACGH8AIAAdaczpMn522VJD3z6Td+rgawPwbsAkCAOY3Rpv2l6p2RqMiI+iezMcZo4ttrdVqHNvVuA4DwAgABN+PTbXpl6U7dMCRL0689U1JdUPl82yH16ZSkjomxkqTVe47og7X7rSwVsAXCCwAE2CtL6yarm71ir/p0StKOg0c1JLu97n5rjRJiIjX33gu0dPshdW4X73X/t1fs0e7DFZo8snfIPXkbsALhBQCCaOqHdZPYLdxSKEmqqKrVBU8ukiSd1yPV6z4P/t/XkqRL+qbrrK7tglAlENoYsAsAFig9Vn3KsmU7Dze4T7GXfYDWiPACABbwdgeSQw1fEiqpqNatr6/QnPV142KcTuaAQevEZSMAsICzGfdPz/j0G+06XKEFWwp1qKxST87bqrduP0dndknxf4FACKPnBQAsUOslvPh6jMDho1Wuzx/79yaVV9XqgX+t93ttQKgjvACATdQXbQpLj6uw7HhQawGsxGUjALCAt/Etvq4keXvOUVWNU0P/uECStO0Plys6kv9JEf74LQcAGyuqOHkpqaKq1sJKgOAhvACAjbn339Q6jT7dVKAj5VX1bg+EA8ILANiEt9l13S8kvfjZDv3q7yt17cwvg1cUYAHCCwDLFJVXqex465x4zdedRd74ejDAR+sPSJK+PVSuf3y1W9fO/JJeGIQlBuwCsER5ZY3Ofny+1WVYxteEdPXsdAr3Mbzun//2/Q2SpL8s2q5HftK36ecCQhg9LwAssfdIhdUlWMpfPS++ntPIIF6EI8ILAEtERbTul5/m9Lx4izu+j3Jyr5pap5Z9e1jHqwk0sDcuGwGwRFREMy6boFmW7yxSSkK03luzTzMX79ClfdP10s2DrS4LaDbCCwBL+LrcEe6ac9moOb47ckzXv5gnSYqLruvt+mRTgeZuOKCl2w9p6hVnMLEdbIfwAgAWaNaAXW/H8ZECdx0u93rOO/6xWpLUp1OSBnRJUfs2McpMifdLTUCgEbcBWMJfb952FayeF19W7T6inzy/VCOmL1St02jd3mJV1zr1v1/t1rhXl6u8skYTZ6/Rq0t3Wl0q4ELPCwCECJ+X0rzkHfddvD37yD0kejv+pv2lrs+fnLdVs5bs0HWDuuhfq76TJN3y2nKt2HVE76/dr1+e181HgUBw0PMCAGHCV1+Or2w0a8kOSXIFF0nKL+Vp1Qg9hBcAlmjtA3abw1c48fZUavfvcwTfdIQJwgsA2ISvSeq8jaNx1PvF9/v4SEStfWwSQhPhBQAs4Cs0BPs4jVFT69SKXUWqrGGSO1iL8AIAFvB2BcdXEPG22n2Z98tGbgN2ve7f+PTzp7lb9LNZeZr8zvpG7wMEAuEFAMKEzwG7Psa8+Jr0+OXP626X/nDd/iZUBfgf4QUAbMLbrdDeljVt/5Ofews3jPFFKCK8AECY8HrZyMd6p9tCcgrsgvACwBLBHGgaigLTfp+3DjX9iK3854TQRHgBABvzOfdLC4/PZSOEIsILAEuEyrN97M69Z8RnL0kzvuXu2YUgg1BBeAEAm2hpNmlOXKzvVutnP92mS59ZopJj1c04KtAyhBcAlmAshX/4utuoKXcjeetZ8ex5OfnVM59+o28Kjuq1L3jaNIKP8ALAEq09uwSi/U0JKo0+ptvn3q4a1dS29p8krBCU8PLCCy8oOztbcXFxGjZsmJYvX17vti+//LLOP/98tWvXTu3atVNubm6D2wOAHflr+Iip53Ov673N8+Lj+L7GvDB2CVYIeHh5++23NWnSJE2dOlWrV6/WgAEDNHLkSBUWFnrdfvHixbrxxhu1aNEi5eXlKSsrS5deeqn27dsX6FIBBFEgegnCndfAE+hvo8P901Mr4McIKwQ8vDz99NO67bbbNH78ePXt21ezZs1SQkKCXn31Va/bv/HGG/r1r3+tgQMHKicnR3/961/ldDq1YMGCQJcKAEHT0sGzQePjulGt0+iW15ZrxqffBK0kIKDhpaqqSqtWrVJubu7JE0ZEKDc3V3l5eY06RkVFhaqrq9W+fXuv6ysrK1VaWurxASD08Q+7/zXnwY4+j+n2ubfoNH9zgRZvPagZn25rxtGB5gloeDl06JBqa2uVnp7usTw9PV35+fmNOsaDDz6ozMxMjwDkbtq0aUpOTnZ9ZGVltbhuALALn7dHtzAlejxewMv6ympny04ANENI3200ffp0zZ49W++9957i4uK8bjNlyhSVlJS4Pvbu3RvkKgGcUFh6XD96cpFeXLLD57aMlfA/7wNyjdv6YFYDBE5Aw0tqaqoiIyNVUFDgsbygoEAZGRkN7vvUU09p+vTp+uSTT3TmmWfWu11sbKySkpI8PgBY45lPv9GuwxWa9p8tjdiad1J/cA8s3r6j3gbZ1sfrgFwf+0SE9L/ACFcB/bWLiYnRoEGDPAbbnhh8O3z48Hr3e+KJJ/T4449r7ty5Gjx4cCBLBOBH1cz5EXY8n0p96s+3KeEI8JeoQJ9g0qRJGjdunAYPHqyhQ4dqxowZKi8v1/jx4yVJN998szp37qxp06ZJkv70pz/p0Ucf1Ztvvqns7GzX2Ji2bduqbdu2gS4XQAs05bIElzD8w9T7hbdtvWzQwp9DBNkFFgh4eBkzZowOHjyoRx99VPn5+Ro4cKDmzp3rGsS7Z88eRbj1O86cOVNVVVW67rrrPI4zdepUPfbYY4EuFwCCw0toaM6d0B4PZmx+NU0+1wmW3L6NVi/g4UWSJkyYoAkTJnhdt3jxYo+vd+3aFfiCAFjmeHWtXvtil7q0i7e6FEtV1drjLh1fM/i6Z5c1e45owptr9PDoPhrVv1OgS0MrFpTwAgAnvLjkWz3DhGYB4fshjYE9/m1/X6VDRyv16zdWa9f00S07GdAAxokDCKqv9xVbXUJYaemzhTx7Vpp+LPc8U1VT26JagMYivAAIKsZI+JevMS8e87wE4PyeD27kZ4vgILwACCre3uzL6SP9uGeX/cXH9Pm2g4EtCK0W4QWA3zTmskME/537lcdlH293A7nHRV+3Unvdvwm1uO0/YvpC3fTKcn32DQEG/kd4ARBUzMgaON7CY1PGsXi/7OSDW7pxekk/ed8ebvT5gcbiZQRAUDEjq5+F0mR/XmpxGqPZy/doCT0w8CNulQYQVFw1aj5f3zpft0I3526iJl028rJs0/5SvbjkW0ni9mn4DT0vAIKKO1LsxWfccb/byUt6OlBy3K/1ABLhBUCQ8Syc+tX4up3Hi5beCu3xVOoWzmLndcyM2zF3Hy7XhDdXa8O+khadByC8AAgqskv9mpMdPPZpxt1E/uRtwK57T9u9s9dqzvoD+snzSwNbCMIe4QWA/zTizZFbpe3F50/LxwbuqzcfKG1hNUAdwguA4CK7NJuvW5l9Dcj1lS2bdau0+7ZeNm5CxxDQaIQXAH5RUlGtd9fs87kdPS/N5+1b19JxKp7HauH+Tdi2sOy4lu8satkJ0WoRXgD4xSMfbPD4etXuI163Y8Bu85UdrzllmfsY3+paL5PU+bx92n+8Ban6wtXwaQt1/Yt5+mL7IT9WgNaC8ALAL749dNTj61+/scrrdkxSF1zuvTXegoSvn0bZ8eqGN/C4VbrB1R5qv09dPD4AzUF4ARAQ9f3Hz+MBQsuuwxUNrj90tKrRx2rKnDAn1Dbj9nCAlxEAQUbPSzDtLTrm+jzQMcHrJaJGnPSBf63TrCU7/F8QwhaPBwAQVIx5sU5A5nnx8dBqX3dDrdh9ROv2FkuS7rjwdL+WhvBFzwsAv3A6vS//6+ff6ornl6qkom7sBDcbha/mhKPjVbUeXzu5jIRGILwACIgTb0H/76PN+npfiWZ9VndZgFulWxf3n7a3cOP+67B02yH1f2ye3lvznSTGw6B+XDYC4Be+3maOff8fNtGldfE1SZ374wPGv75c1bVG9729Tit2HdHcDfmaf98F6tA2NuB1wl7oeQEQVDxVOsz4fJ7SyQ28PfvIfQyU++/Gm8v2qKi8Sm8u29PiEhF+CC8A/OKHd5ocLKv0up7LRuGl1Nc8MG58XTbyxmnqZm+uqa1nUBVaJcILAL9o7EyuZJfw0pR5YHzxdqv1oaOVOvv/zdc1M7/023lgf4QXAEERkNt0YXvuMy57G6A7d2O+ap1G678rCWZZCHGEFwBAwPjKrO49cd5uLnIPvbVOo437S7idGoQXAP7hbTAm4OvXwtdVRPdw89iHGzX6uaX68/ytKiqv0q5D5S2uD/bErdIA/MJXdPE2uyrQlEFQ//vVbknSC4t26IVFdfMGffHQj9U5JT4gpSF00fMCICjomIE3PntefKxfs+eIv0qBjRBeAPiF14fyAT609O4zhr+0ToQXAH7h+7IRWiNflwubMubFm0NllbrgiUV6+pOtTSsMtkZ4AeAfpBN4sbfoWIPrWzrj8itLd2pPUYWeW7i9RceBvRBeAPhFY7MLc9TBna/LjQ4fvzHc5dY6EV4A+IW3N6Hiiiq39cGsBnbR0l8LHjfROhFeAATMeX9a5PYV6QWn8jkPTBOyyb/X7ddFTy3WlvzSlhWFkEd4AeAX3u76OFpZ4/qcnhd443MG3iYc6+631mjnoXLd89aalpQEGyC8APCLPUUVVpcAG6qsrm1wfXMG9JZXNnxM2B/hBQBgmS35ZX4/prcHPCK8EF4ABAWXjRAstcboV39bqetmfkmQCVM82whAUBgZfbH9kP66dKfVpSCMeLvLzRijTzcXSJK2FZYpJyMp2GUhwOh5ARA0Y/+6zOoSYDO+hrx461iprj250On0c0EICYQXAEHBZSM0x3dHGp6h1xv3S0XFx6p0x/+u0sItBf4sCxYjvAAIindWfWd1CQhD3p6dVOPW3fKnuVs1d2O+fvn6ymCWhQAjvABosYqqGt8bAQFQUFp5yrIat8tG+SUne25eWbpTo5/7XIePnroP7IXwAqDFdh9mjheEjhq3y0a1bmNeHp+zSRv3l+p5HuJoe4QXAC3G7agIVTVeRuweq2ISO7sjvABoMQbjIlRV15waXniWo/0RXgC0mJP0ghBV7aVXkPBif4QXAC1GdEGoqqk9teel1mn01LytWrmryIKK4A/MsAugxbzNcgqEAm/Dsd5fu19VNU79ZdF27Zo+OvhFocXoeQHQYkQX2EmV2ziYlbuK9OKSHXIy6NxW6HkB0GJ0vMCurpuVJ0lqlxCj64dkWVwNGoueFwB+QHqBvW06UKpdh8p1vJrbqO2AnhcALeb+IDzAjt5bs0+vf7lLkrT+sUslSUlx0RZWhIYQXgC0GP+twu5KjlW7Pj/zsU8kSS/fPFhtYiJV4zS6oFdHq0qDF0G5bPTCCy8oOztbcXFxGjZsmJYvX97g9u+8845ycnIUFxen/v376+OPPw5GmQCa6Xj1qbejAnZ3299X6ud/XaabX12utXuLtWp3kUoqqn3viIALeHh5++23NWnSJE2dOlWrV6/WgAEDNHLkSBUWFnrd/ssvv9SNN96oW2+9VWvWrNHVV1+tq6++Whs2bAh0qQCaYNXuIg2ftkAvfbZDlTX0vCC8Xf3CF7p2Zp4G/P4TVdbUKr/kuCRp6bZDOuD28EcEh8MEeIKGYcOGaciQIfrLX/4iSXI6ncrKytLdd9+thx566JTtx4wZo/Lycs2ZM8e17JxzztHAgQM1a9Ysn+crLS1VcnKySkpKlJSU5L+GfG/RlkIdq67VqP6d/H5swE4G/v4TFfNfKFqxnIxEbckvU6/0trqkb7r+teo7zb59uLI7JEiS1n1XooykOGUkx+l4da3ioiNljJExUkSEwzU/koMpfyU17f07oGNeqqqqtGrVKk2ZMsW1LCIiQrm5ucrLy/O6T15eniZNmuSxbOTIkXr//fe9bl9ZWanKypOPNy8tLW154V4s+/awxrz01SnL2yVEKzEuWkZ1v5AnoqAxRkZ1XxsZOV3rvt/u+22O/ODFPyMpTg6H1NCvckt+0RvatcF1DVbka9+G9qt/rc9WBuCcvvdtaL8G2tKC16aWfI/8/fP+el+JJCnC4X3yL6A12ZJfJkn6puCovik4Kkm66KnFjdo3MS5K5ZU1cpq6v6fYqEglxUepvLJWnZLjdKSiWrVOp1ISYhQZ4f3vsb6+h3r/NBv4m61vVX3nGJLdXk/+bED9BwywgIaXQ4cOqba2Vunp6R7L09PTtWXLFq/75Ofne90+Pz/f6/bTpk3T7373O/8U3IBKLw/3kqQjFdWnBJCWyC897rdjAYFCcAFapux4jetzp5GOVdfq2PcD37cVHnWt8+f7iz917dDG0vPb/m6jKVOmePTUlJaWKivL/xMNDeyaov+7c4SunfmlJCkzOU4PXp6jzJR41YVih6vHxOFwKMJR99/rif9uHd9/HRFxcrlDdQMd31uzT8eqa3RJ33R1bBvXYB2mgejc0AXAht5rGrpy2PB+DawMSJ0NrfN/Gxr6XjfvP5jmnSvYP9eGVhYfq9LBskoNOq2drp3pvfcUaE26pbbRgZJjOl7t1LM3DNSiLYVKSYhRZY1TZ3ZJVo3TqLbWqbNPa6d1e4sVEeFQemKc2sRGqWNirDYfqLtakJkSr2NVtYqOdGjnoXL1SGurpPho5ZccV2SEo97eF6kxPbDN7xWub3VSvLW3kQc0vKSmpioyMlIFBQUeywsKCpSRkeF1n4yMjCZtHxsbq9jYWP8U3ICkuGgNOq1dQJ6D0b9Lst+PCQTalscv0znTFmhIdnv95ednqfdv51pdEhBwA7NSdLy6Vo9deYaWfHNQd1x4unYcPKq9RRW6ckCmrhrYud59z+yScsqyHmltT1k2rHsH1+e90hP9Une4CWh4iYmJ0aBBg7RgwQJdffXVkuoG7C5YsEATJkzwus/w4cO1YMECTZw40bVs/vz5Gj58eCBLBdBEcdGRWvto3WReVfVcVgXCyX9f2ksTftzT9fU534eMs7u209ld21lVVqsU8MtGkyZN0rhx4zR48GANHTpUM2bMUHl5ucaPHy9Juvnmm9W5c2dNmzZNknTvvffqwgsv1J///GeNHj1as2fP1sqVK/XSSy8FulQAACRJfTol6W/jh2jvkQoNOq291eXgBwIeXsaMGaODBw/q0UcfVX5+vgYOHKi5c+e6BuXu2bNHEREnp5sZMWKE3nzzTf32t7/Vb37zG/Xs2VPvv/+++vXrF+hSATQTd3oiXKx4OFf/WvWdrhjQSWlJcUpLangcIqwR8Hlegi3Q87wAOFVNrVM9Hv6P1WUAzXJxTpq+3leirPYJ+r87R1hdTqsVMvO8AGgdmGQLdpYQG6XPHrhIEfwe2wbhBUCL8ZIPO+vaPl5x0ZFWl4EmILwAaDH+YYUdvTJusD7ZWKAJF/X0vTFCCuEFQItx2Qh2dHGfdF3cJ933hgg5AX+qNAAAoSIxlv/ZwwHhBQAQ9n55bjflZCTqX3eOUMfEWD1wWW+rS0ILEEEBBM2ZXZK1/rsSq8tAGEttG6NDR6skSXHRETpeXTf786NX9HVts/w3F3Op0+boeQEQNMkWP8wNrcsr44YoLTFWL940yGM5wcX+6HkBEDTMo4FAS20b6+p5ObdHqpY/nGtxRQgEwguAoImKILwgsAZmpehng7OU3SHB6lIQQIQXAEETSXhBCw3IStG6vcWSpG6pbbTzULkkqX2bGBWVV+ny/p10Ya+OFlaIYCC8AAianw3O0iebCqwuAzaRHB+tkmPVHst+0r+TJl/aWwmxdTPi3v73lfrNqD66oFdH7Sg8qmHdO1hRKoKM8AIgaHL7pFldAkLciR4Uqe7utM+3HZIkfTrpAn2x/bDGDuuqqMiT95qseDjXNQA3tW1s8AuGJQgvAILin/81nLs84FNSXJRKjlWrXUKMnvrZAD0z/xtdPyRLPdIS1SMt8ZTt+Z1qnQgvAIJiaLf2VpeAEDPyjHTN21igjKQ45ZcelyR1TIzVO3eMcH0+/dozrSwRIYrwAgCwxH2X9NINQ7qqf5dkrdhZpJlLdujJ6waoYyKXf9AwwgsAIGjcZ1lu3yZGORlJkqTL+3fS5f07WVkabITwAgBhKDrSoepaU+/6mMgIVdU6g1hR3TmfveEsfXvwqCqqapWWGBfU8yN8EF4AoBUK5jjXl28erNw+aa7Btd1S2wTv5AhLPNsIAGzI23OiEmIiG9ynX+ck1+feHtXQvaP/QsXoM09eArqkbzp3BcGv6HkBABvylgVioyJUUVVb/z46uZO3/WMiG///bHx0pI5Ve57L/a6hKZfnKDk+WtcN6tLoYwKNRXgBgDDhq3fD/ekM3raMijy5tEu7eH135FgD5zp1Wa05OcamU3K8/vjT/g3WAzQX4QUAwoR7njDexuq6JQ5vl42i3XpeGgou9e0/4vQO2nfkmLp3bMNzrBBQjHkBEFR/vXmw1SWEBW/RwNewEke9X9SJjmj4LaG720Bbb+eKjHDoX3eO0BPXDWi4EKCFCC8Agiq3b7rVJYSxk4nCW8eLe2dI2fGaU9e7vSOkto1p8Ezeel68LQMCgfACADbkbXyLrys1Tbnjx+tlJ49jnbosOpLwguAgvAAImOsHc6dJoHiLCS3t+dhWcNT1udcxKz4G/EY34W4loCX4TQPgF97mGMlql2BBJa2Xr+zi9NGdcri8yvV5lJfw4r7EW1CKi254nhnAXwgvAPyiZ1rbU5b5uPKABjSnE8XzbqNTv/tOZ+N/IhE+rkG5X4KamNtT2R0SdMeFpzf6+EBLEF4AIAR56yTxmKfF21UdH4ln3fcPRKzPmV2SG1zvfnz3U03M7aXFky9S+zYND/IF/IXwAiAgJl3Sy+oSwk6g7uZ5+voBGnF6Bz17w1muZcO7d5AkJcZ6nw7MW88OECxMUgcgICIcUpAfWhz26sJL/aGhKdnmrK4pWrOnWJJ0zdlddM3ZdYOrv3jox4qPjlR0pEOnp7XV6P6ddP4TiyRJ/Tsna3th3aDec7p30Jz1B+htgSUILwD8Iju1jcdlCYfDISPSiz+1tOOlR1pbPXhZjtrERCo9OU53vbFad13Uw2Obzinxrs9PjGH55L4LtHxnkYZkt9d7a/ZJkv7w0/7q0ylJVw7IbFlRQDMQXgD4Ra/0RI+vHQ7fc4WgaZoSXrx960ec3kGXuE0SOHfiBY06Vq/0RNfP94lrz1R6cpyS46NPCT5AsDDmBUBARDgc9V7gePaGgcEsJWy4j3nxFgzdl3nLOTkZSS2u4fohWbqwV8cWHwdoCcILgICIcKjerperBnYObjE24ethhk0ZsOu+7YcTztVvRuVozJCsZtcGhBLCC4CAaKjnBd59OunCBtc35bKR+7ZndknR7ReczpOeETYILwACYlT/TkptG2t1GbaRFBelbm5PbfbGPXr4fII0D0lEGGPALgC/+OG8H5kp8bpxaFdt3F+iCxgj4VNjwkZTAkm/zCSt3lPs82GNgB0RXgAETExUhJ64boDVZdhCY3JJUzpTnv/52fqfRdt18/DsZtcEhCouGwGwxONXnWF1Cbbj+26jkwszk+P0h5/2V++MxFM3BGyO8ALAL5o6p8tN9Ah4aEyniq9LQIlx0SePx5gXhDHCCwBY6J6Le0qSHr+6nySpXUJdADm/Z6qXrU8Gki7t4k9Zm9U+Qb8d3UdPXnem/wsFQghjXgDAQpMu6aVbz+um5Pi60LLkgYu0v/iYPl5/QJ9vO+SxbYRDWvrgRTpeXavfz9l8yrFO79hGvzq/e1DqBqxEzwsAv2BOl+Y7EVwkKSkuWjkZSTqvZ90dWg7HyecNXdQ7TV3aJahHWqLH+JZ37hiuW0Zk697cnsEtHLAIPS8A/IKnC/vX0G7t9X93jtBpHRJUU2v0yaZ8Xfv9k58lqW3syZfvIdntNSS7vRVlApag5wWAX1w/OEtx0byk+NOg09optW2sMpLjdPPwbLVxCyyP/KSvBnRJ1tPXcys6Wh9eaQD4RUxUhJ76GW+kwZKZEq8PJpyna9x6Y4DWgvACAABshfACAABshfACwG+aOlFda3XFgExJ0o9688wnoDm42wgAgiy1bYy2PH6ZYqP4/xFoDsILAASZQw7FRUdaXQZgW8R+AAgyHjsEtAzhBYDfpCRE+94IjXoII4D6cdkIgN+c1yNV48/NVp+MJKtLCWn0vAAtE7Cel6KiIo0dO1ZJSUlKSUnRrbfeqqNHjza4/d13363evXsrPj5eXbt21T333KOSkpJAlQjAzxwOh6ZecYauH5JldSkh7YJe3GUEtETAwsvYsWO1ceNGzZ8/X3PmzNFnn32m22+/vd7t9+/fr/379+upp57Shg0b9Prrr2vu3Lm69dZbA1UiAFji/J6EF6AlHMb4f2aGzZs3q2/fvlqxYoUGDx4sSZo7d65GjRql7777TpmZmY06zjvvvKNf/OIXKi8vV1RU465wlZaWKjk5WSUlJUpKousaCGXZD31kdQmW2DV9tNUlACGnKe/fAel5ycvLU0pKiiu4SFJubq4iIiK0bNmyRh/nRAMaCi6VlZUqLS31+ACAUPXjnDSrSwBsLyDhJT8/X2lpnn+gUVFRat++vfLz8xt1jEOHDunxxx9v8FKTJE2bNk3Jycmuj6wsrrUDCE0v3jRIz994ltVlALbXpPDy0EMPyeFwNPixZcuWFhdVWlqq0aNHq2/fvnrsscca3HbKlCkqKSlxfezdu7fF5weAQBh5RobaxHKTJ9BSTforuv/++3XLLbc0uE337t2VkZGhwsJCj+U1NTUqKipSRkZGg/uXlZXpsssuU2Jiot577z1FRzc8b0RsbKxiY2MbVT8AWOWNXw2zugQgbDQpvHTs2FEdO/oeJT98+HAVFxdr1apVGjRokCRp4cKFcjqdGjas/j/g0tJSjRw5UrGxsfrwww8VFxfXlPIAICi6d2yj3umJ6tc5WU/O29qofc7p3iHAVQGtR0DGvPTp00eXXXaZbrvtNi1fvlxffPGFJkyYoBtuuMF1p9G+ffuUk5Oj5cuXS6oLLpdeeqnKy8v1yiuvqLS0VPn5+crPz1dtbW0gygQAnxwOqW+nJP04J01v/mqYzuneXi/dNFgzfzFId13Uo/HHCWCNQGsTsIuvb7zxhiZMmKCLL75YERERuvbaa/Xcc8+51ldXV2vr1q2qqKiQJK1evdp1J1KPHp4vCDt37lR2dnagSgWAekU6HPronvMk1U3CN6JHqsf6M7ska/13DU+mee3ZXRQRQXwB/CUg87xYiXleAPuwwzwvkREO7fjjqHrXlx2v1lffFumsrin68VOLVXq8RpKU2ydda/Yc0WcPXMQgXaARmvL+zV8UAMu8Pn6I/vzJN6pxGm0+EJpzNDl9/H+XGBetS/qmS5LiYyJd4eXlmwep1mkUFcnzbwF/468KgGV+1DtN/777PPXJSLS6lHpFNuEpipf36yRJOr1jGzkcDoILECD0vACwXChfu45swliVhy7P0ZldknnwIhBghBcA8CK1bYwOHa1qUhCJi47UNWd3CWBVACTCCwB49X93jtCc9Qc0dlhXq0sB8AOEFwDwoku7hCbN4wIgeBhNBsByoThjA9OyAKGL8AIAXjiacJcRgODishEAfG/exAu0cneRbhzCOBcglBFeAOB7vTMS1TuE55wBUIfLRgAsF3ojXgCEMsILAACwFcILAACwFca8AGjVMpPjdLSyRtcOYmZcwC7oeQFguUBP8zL9mv5KbRujMYOzTlnXpV2C1jx6qaZecUZgiwDgN/S8ALCcMwDpJcIh/WZUH7WNjdINQ7tqzJAs/eOr3Xp75annbsrDFwFYj/ACwHL+jC4Tc3tq84FS3f3jnurXOdm1vL5J5wZkpfjx7ACCgfACwHLtE2L8dqzuHdtqYm4vr+vcQ9Knky7QvI0FGn9utt/ODSA4CC8ALDfpkl767kiFRvXvpMn/Wh+w86Qlxro+75GWqB5pTEgH2BHhBYDl2rWJ0Wvjh6qiqiag4eXSvhn6rwu6ayCXigBbI7wACBkOBXbgbESEQ1NG9QnoOQAEHrdKAwAAWyG8AAAAWyG8AAgZ9dzNDAAeCC8AAMBWCC8AAMBWCC8AAMBWCC8AAMBWCC8AQgYDdgE0BuEFAADYCuEFQMgI9Ay7AMID4QVAyHAa43sjAK0e4QVAyIiMoOcFgG+EFwAhIzoyQv+4dZheGz/E6lIAhDCeKg0gpJzXM9XqEgCEOHpeAACArRBeAACArRBeAACArRBeAIQVw+3WQNgjvAAAAFshvAAIK0x0B4Q/wguAsNK3U7LVJQAIMOZ5ARAWlkz+kQ6UHFfvjESrSwEQYIQXAGHhtA5tdFqHNlaXASAIuGwEAABshfACAABshfACAABshfACAABshfACAABshfACAABshfACAABshfACAABshfACAABshfACICQ9f+NZ6p7aRv06J1ldCoAQQ3gBEJKuGJCphf/9I/VK51lFADwRXgAAgK0ELLwUFRVp7NixSkpKUkpKim699VYdPXq0UfsaY3T55ZfL4XDo/fffD1SJAADAhgIWXsaOHauNGzdq/vz5mjNnjj777DPdfvvtjdp3xowZcjgcgSoNAADYWFQgDrp582bNnTtXK1as0ODBgyVJzz//vEaNGqWnnnpKmZmZ9e67du1a/fnPf9bKlSvVqVOnQJQHIEykJETr91f104AuyVaXAiCIAtLzkpeXp5SUFFdwkaTc3FxFRERo2bJl9e5XUVGhn//853rhhReUkZHRqHNVVlaqtLTU4wNA6+CQdOWATJ3WoY3VpQAIooCEl/z8fKWlpXksi4qKUvv27ZWfn1/vfvfdd59GjBihq666qtHnmjZtmpKTk10fWVlZza4bAACEviaFl4ceekgOh6PBjy1btjSrkA8//FALFy7UjBkzmrTflClTVFJS4vrYu3dvs84PAADsoUljXu6//37dcsstDW7TvXt3ZWRkqLCw0GN5TU2NioqK6r0ctHDhQu3YsUMpKSkey6+99lqdf/75Wrx4sdf9YmNjFRsb29gmAAAAm2tSeOnYsaM6duzoc7vhw4eruLhYq1at0qBBgyTVhROn06lhw4Z53eehhx7Sr371K49l/fv31zPPPKMrrriiKWUCAIAwFpC7jfr06aPLLrtMt912m2bNmqXq6mpNmDBBN9xwg+tOo3379uniiy/W3//+dw0dOlQZGRlee2W6du2qbt26BaJMAABgQwGb5+WNN95QTk6OLr74Yo0aNUrnnXeeXnrpJdf66upqbd26VRUVFYEqAQAAhKGA9LxIUvv27fXmm2/Wuz47O1vGmAaP4Ws9AABofXi2EQAAsBXCCwAAsBXCCwDb6t6xrdUlALBAwMa8AECg/GZUjr7eV6opl+dYXQoACxBeANjOWV3b6fYLTre6DAAW4bIRANvhRkSgdSO8ALAdh8PqCgBYifACwHbILkDrRngBENJioyJPWUbPC9C6EV4AhLT7Lump3umJevQnfd2Wkl6A1ozwAiCkpSXGad59F+iX5518QCs9L0DrRngBYDtpibFWlwDAQszzAsA2Zt9+joorqtWlXYLVpQCwEOEFgG2c072D1SUACAFcNgIAALZCeAEAALZCeAEAALZCeAEAALZCeAEAALZCeAEAALZCeAEAALZCeAEAALZCeAEAALZCeAEAALZCeAEAALZCeAEAALZCeAEAALYSdk+VNsZIkkpLSy2uBAAANNaJ9+0T7+MNCbvwUlZWJknKysqyuBIAANBUZWVlSk5ObnAbh2lMxLERp9Op/fv3KzExUQ6Hw6/HLi0tVVZWlvbu3aukpCS/HjsUhHv7pPBvI+2zv3BvI+2zv0C10RijsrIyZWZmKiKi4VEtYdfzEhERoS5dugT0HElJSWH7SymFf/uk8G8j7bO/cG8j7bO/QLTRV4/LCQzYBQAAtkJ4AQAAtkJ4aYLY2FhNnTpVsbGxVpcSEOHePin820j77C/c20j77C8U2hh2A3YBAEB4o+cFAADYCuEFAADYCuEFAADYCuEFAADYCuGlkV544QVlZ2crLi5Ow4YN0/Lly60uyatp06ZpyJAhSkxMVFpamq6++mpt3brVY5vjx4/rrrvuUocOHdS2bVtde+21Kigo8Nhmz549Gj16tBISEpSWlqbJkyerpqbGY5vFixfr7LPPVmxsrHr06KHXX3890M07xfTp0+VwODRx4kTXMru3b9++ffrFL36hDh06KD4+Xv3799fKlStd640xevTRR9WpUyfFx8crNzdX27Zt8zhGUVGRxo4dq6SkJKWkpOjWW2/V0aNHPbZZv369zj//fMXFxSkrK0tPPPFEUNpXW1urRx55RN26dVN8fLxOP/10Pf744x7PM7FTGz/77DNdccUVyszMlMPh0Pvvv++xPphteeedd5STk6O4uDj1799fH3/8ccDbWF1drQcffFD9+/dXmzZtlJmZqZtvvln79++3TRt9/Qzd3XHHHXI4HJoxY0ZYtW/z5s268sorlZycrDZt2mjIkCHas2ePa33Iva4a+DR79mwTExNjXn31VbNx40Zz2223mZSUFFNQUGB1aacYOXKkee2118yGDRvM2rVrzahRo0zXrl3N0aNHXdvccccdJisryyxYsMCsXLnSnHPOOWbEiBGu9TU1NaZfv34mNzfXrFmzxnz88ccmNTXVTJkyxbXNt99+axISEsykSZPMpk2bzPPPP28iIyPN3Llzg9bW5cuXm+zsbHPmmWeae++9NyzaV1RUZE477TRzyy23mGXLlplvv/3WzJs3z2zfvt21zfTp001ycrJ5//33zbp168yVV15punXrZo4dO+ba5rLLLjMDBgwwX331lfn8889Njx49zI033uhaX1JSYtLT083YsWPNhg0bzFtvvWXi4+PNiy++GND2GWPMH/7wB9OhQwczZ84cs3PnTvPOO++Ytm3bmmeffdaWbfz444/Nww8/bN59910jybz33nse64PVli+++MJERkaaJ554wmzatMn89re/NdHR0ebrr78OaBuLi4tNbm6uefvtt82WLVtM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v95cddVVXm+9Peuss8yyZcvM0qVLTc+ePT1u2ywuLjbp6enmpptuMhs2bDCzZ882CQkJQblVety4caZz586uW6Xfffddk5qaah544AFbtrGsrMysWbPGrFmzxkgyTz/9tFmzZo3rTptgteWLL74wUVFR5qmnnjKbN282U6dO9dut0g21saqqylx55ZWmS5cuZu3atR6vO+531oRyG339DH/oh3cb2b197777romOjjYvvfSS2bZtm+sW5s8//9x1jFB7XSW8NNLzzz9vunbtamJiYszQoUPNV199ZXVJXkny+vHaa6+5tjl27Jj59a9/bdq1a2cSEhLMT3/6U3PgwAGP4+zatctcfvnlJj4+3qSmppr777/fVFdXe2yzaNEiM3DgQBMTE2O6d+/ucY5g+mF4sXv7/v3vf5t+/fqZ2NhYk5OTY1566SWP9U6n0zzyyCMmPT3dxMbGmosvvths3brVY5vDhw+bG2+80bRt29YkJSWZ8ePHm7KyMo9t1q1bZ8477zwTGxtrOnfubKZPnx7wthljTGlpqbn33ntN165dTVxcnOnevbt5+OGHPd7o7NTGRYsWef2bGzduXNDb8s9//tP06tXLxMTEmDPOOMN89NFHAW/jzp07633dWbRokS3a6Otn+EPewovd2/fKK6+YHj16mLi4ODNgwADz/vvvexwj1F5XHca4TWsJAAAQ4hjzAgAAbIXwAgAAbIXwAgAAbIXwAgAAbIXwAgAAbIXwAgAAbIXwAgAAbIXwAgAAbIXwAgAAbIXwAgAAbIXwAgAAbIXwAgAAbOX/AxSbZAI541OdAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "nbpat=50\n",
    "data = patterns[nbpat].signal\n",
    "samplerate=16000\n",
    "plt.plot(data)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "bbdb9edd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "                <audio  controls=\"controls\" >\n",
       "                    <source src=\"data:audio/wav;base64,UklGRiR9AABXQVZFZm10IBAAAAABAAEAgD4AAAB9AAACABAAZGF0YQB9AAAAAP3/+f/2//n//f8AAAEAAwABAP///f/5//f/+f/9////AAABAAEAAAAAAAEAAQABAAAA+//u/+f/8P8BABcAKwAxAB8A/f/V/7//xv/n/xIAQQBZAEoAHQDn/7//sv/I//L/HQA+AEkANgAUAPT/1v/K/9P/7P8HAB0AKgAoABkABQDu/9z/2P/h//T/BwAXAB0AFwAKAPv/7v/l/+P/6//7/wcAEAAUABAABQD7//D/5//r//b/AQAOABUAFAAKAAAA9//y//D/9////wcADgAOAAwABQD///v/9//5//3/AQAFAAoADAAJAAUAAAD7//f/9////wEABwAKAAkABQAAAPv/9//3//v///8DAAcACgAHAAMA///5//b/9////wEABQAHAAUAAwAAAPv/+f/5//v///8AAAMABQADAAAA///9//n/+////wAAAQADAAEAAAD9//v//f///wAAAAAAAAAAAAAAAP///f/9//3/AAABAAMAAwAAAAAA/f/7//3///8BAAMAAQADAAEA///9//3//////wEAAwAFAAMAAQAAAAAAAAAAAAAAAQADAAUABQABAAAA//8AAAAAAQABAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAAA/////wAA////////AAD//wAAAAAAAAEAAAABAAAAAAABAAEAAwABAAEAAQAAAAAAAQAAAAEAAQABAAEAAAABAAAAAAABAAAAAQAAAAEAAwABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAP///////wAA/////////f////////8AAP//////////AAD///3/AAAAAP//AAD/////AAAAAAAA////////AAD///3/////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQAAAAAAAQABAAEAAQABAAEAAAAAAAEAAAAAAAEAAAABAAEAAQABAAEAAQABAAAAAAABAAEAAAABAAEAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAD//////f///wAA///9//3/+//7//v/+//7//3//f/9//3//f/9//3//f/9//3////9///////////////9////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAQABAAEAAQABAAAAAQADAAMAAQADAAMAAAABAAEAAwADAAEAAAAAAAEAAQABAAMAAQADAAEAAAABAAAAAQABAAAAAQAAAAEAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAA//8AAAAAAAAAAP//AAD/////AAD//wAAAAD9/wAA///9/wAA////////AAD/////AQD//wAAAQD//wAAAQAAAAAAAAAAAAAAAAAAAAAAAQABAP////8BAAAAAwAFAAEAAAAAAP//+f/9/wEAAAADAAUAAAAAAAAA/f///wAAAAD//wEAAAAAAAMAAQD//wAA/f/5//3/AAAAAAMABQABAAAAAAD9//3/////////AAAAAAAAAQAAAAAAAQAAAPv/+/////3/AAADAAMAAwADAAEAAAD///3////3//T/AAAHAAEACQAVAAwA+//2//n/9v/u//f/CQASAAcACQAMAAEA9//y//T/8v/3/wAACgAVABIACgAFAPv/8v/u//L/9/8AAAkADgASAA4AAwD7//T/8v/y//n///8FAA4AEAAKAAMA/f/2//L/8P/3/wAAAwAKAAwACQADAP3/+f/2//b/9////wUABwAJAAcAAwD///v/9//3//3///8BAAkACQAHAAMA///7//n/+f/9/wEABQAHAAkABQABAP//+//7//v///8AAAMABwAHAAMAAAD///3/+//9/wAAAAABAAUAAwABAAMAAwAFAAMAAwABAAMABQADAAMAAwAFAAUAAwAFAAUABQAFAAUABQAFAAMABQADAAMABQADAAUAAwABAAMAAwADAAMAAQABAAEAAQABAAEAAAABAAAAAAAAAAAAAAAAAAAA/////wAA///////////9/////f/9//3//////////f///////f/9//3//f/9/////f/9//v//f/9//v//f/9//3//f/9/////f/9/////////wAA////////AAD/////AAD///////8AAAAA////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAAABAAEAAAADAAEAAQABAAEAAQABAAEAAQABAAEAAwABAAAAAQABAAMAAQAAAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAAABAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAA/////////////////f///////f/7//3//f/9//3//f/9//3//f/9///////9//3//f//////AAD9/////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAABAAEAAAAAAAAAAQABAAEAAAABAAEAAwABAAEAAQADAAEAAQAAAAEAAQAAAAEAAQAAAAEAAQABAAEAAAAAAAAAAQAAAAAAAAAAAAEAAQABAAAAAQABAAEAAQABAAAAAAABAAEAAQABAAEAAQABAAEAAQAAAAAAAAABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAAAAAAAAAP//////////AAD//////////wAA////////AAD9////AAD///////8AAAAA//8AAP//AAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAP//AAAAAP//AAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAEAAQAAAAAAAQABAAAAAAABAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAA/////wAAAAAAAAAAAAD/////AAAAAAAAAAAAAP//AAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAABAAAAAQABAAEAAQADAAMAAQABAAEAAwADAAEAAwADAAMAAwADAAMAAwAFAAMABQAFAAUABwAFAAUABQAFAAUAAwAFAAMAAwADAAMAAwABAAMAAwABAAMAAQABAAAAAAAAAAAAAAAAAAAAAAD//////////wAAAAD//wAA///9/////f/9///////9//3//f/7//3/+//7//v/+//5//n/+f/5//n/+//9//v/+//7//3//f/9//3//f////3///////3/////////AAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAMAAQADAAMAAwADAAEAAQADAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQABAAEAAAABAAMAAwADAAEAAQADAAAAAAAAAAEAAAAAAAAAAAAAAAAA/////wAA/////////////////////////f///////////wAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAMAAQAAAAAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAEAAAAAAAAAAAAAAP///////wAAAAD//wAA/////wAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAEAAAAAAAAAAAABAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQABAAEAAQABAAEAAQAAAAAAAAAAAP///////wAA/////wAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAP//AAD//wAAAAD//wAAAAAAAAAA//8AAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAP//AAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAABAAEAAAABAAAAAAAAAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAA//8AAP///////////////wAA/////wAAAAAAAAAAAAAAAAAAAAAAAAEAAQAAAAEAAAAAAAEAAAAAAAAAAQABAAMABQABAAEAAwABAAEAAQADAAEAAwADAAAAAQADAAEAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////wAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAA///9////AAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQAAAAMAAwABAAEAAQABAAEAAwABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAP////8AAAAA//8AAAAA//8AAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAABAAAAAQADAAEAAQABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAD//wAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQADAAEAAAABAAEAAQAAAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAD//////f/9////AAD//////f/9//3//f//////AAAAAP//AAD/////AAD//wAA//8AAAAAAAAAAAAAAAAAAAEAAQABAAAAAQABAAAAAQABAAEAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAA//8AAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAEAAAAAAAEAAAAAAAAAAQABAAAAAQABAAEAAQABAAEAAwABAAAAAAAAAAAAAAAAAAAAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAD/////////////AAD/////////////AAD//wAA/////wAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAEAAAAAAAEAAQABAAAAAQAAAAEAAQABAAAAAAABAAAAAAABAAAAAAABAAEAAQABAAEAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAA/////wAAAAAAAP///////////////wAA////////AAAAAAAA/////wAA//8AAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA////////AAAAAP////8AAP////8AAAAA//8AAAAA//8AAAAAAAAAAAAAAAAAAAAAAQAAAAEAAQAAAAEAAAAAAAEAAAABAAAAAQAAAAEAAQAAAAMAAQABAAEAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAAAAAAAAAAAAP///f///wAA//8AAP///////////////////f////3//f///////////////////wAA/////wAAAAD//wAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAEAAwABAAEAAwABAAEAAQABAAEAAQABAAEAAQAAAAAAAQADAAEAAwABAAAAAAABAAEAAAAAAAEAAQAAAAEAAQABAAEAAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAA//8AAAAA//8AAAAAAAD////////9/wAA/////wAA//8AAP////8AAP////8AAP////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAAAAAAEAAAAAAAAAAAAAAAEAAAAAAAEAAQABAAEAAwABAAEAAQAAAAEAAAABAAMAAQAAAAEAAQABAAEAAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAA//8AAAAAAAD//wAA/////wAAAAAAAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAD/////AAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAABAAEAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAD/////AAAAAAAAAAAAAP//AAD//////f/9////////////AAD///////8AAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQABAAAAAQABAAEAAQABAAEAAQAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAQAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAD///3///////////////////////3//////wAA///9/wAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAD//wAAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAABAAAAAQAAAAAAAQAAAAEAAQABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAD//////////wAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAEAAQABAAAAAQABAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAP//AAAAAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAAAAAD/////AAAAAAAA//8AAAAAAAAAAP//AAAAAP//AAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQAAAAEAAAABAAEAAAABAAEAAQABAAEAAQAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAEAAQAAAAAAAQABAAAAAAAAAAAAAQABAAEAAAABAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAA//8AAP//////////AAAAAP//AAD/////////////AAD//wAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAQABAAAAAQABAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAA//////////////////8AAP///f///wAA/////wAA//8AAP////8AAP//////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAQAAAAEAAwABAAEAAQABAAEAAQADAAEAAwABAAEAAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAEAAQABAAEAAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAA/////////////////////wAA/////wAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////////AAAAAP//AAD//////////wAA//8AAAAAAAAAAAAAAQABAAAAAQABAAEAAQABAAMAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAA//8AAP//AAD/////AAD///////////3///////3///////3//f/9/////////wAA///9/////f/9////AAAAAP////8AAAAAAAAAAAAAAAAAAAAAAAAAAAMAAQADAAMAAQADAAMAAwAFAAUABQAFAAMABQAFAAUABQAFAAcABwADAAMAAwADAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAA///9//////////3////9//3//////wAA//8AAP////////////8AAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAP//AAAAAP//AAAAAP//AAAAAP///////wAAAAD/////AAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAD//wAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAABAAAAAAAAAAAAAAABAAEAAAAAAAAAAAAAAAAAAAABAAEAAAABAAAAAAAAAAAAAAAAAAAAAAABAAEAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAAAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAA////////AAAAAAAAAAAAAAAAAAD//wAAAAAAAP//AAAAAAAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAQADAAEAAAABAAEAAQABAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAP//AAAAAP//AAD//wAA/////////f////3//f/9//3////9////AAD////////////////9/////////wAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAEAAAAAAAEAAAAAAAAAAAAAAAAAAQABAAMAAwABAAEAAAAAAAAAAQABAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAABAAEAAQABAAAAAAABAAAAAQABAAAAAQABAAAAAAAAAAAAAAD//wAA//////////8AAAAAAAD/////AAD///////////////8AAAAAAAAAAP////////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAQABAAEAAQAAAAEAAQAAAAEAAAABAAEAAQABAAAAAAAAAAEAAQAAAAEAAQAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAP//AAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///////wAA/////////////////f////3/+//9//3//f/9//3//f/9//3//f///wAA//8AAAAAAAAAAAAAAAABAAEAAAABAAEAAQABAAMAAQADAAMAAwADAAMAAwABAAMAAwABAAEAAwABAAAAAQABAAEAAQAAAAAAAAAAAAAA//8AAAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAQAAAAAAAAAAAAAAAAD//wAAAAD//wAA/////wAA/////wAA/////wAAAAAAAAAAAAD//wAAAAD/////AAAAAAAAAAD/////////////AAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAEAAAABAAEAAAABAAEAAQABAAEAAQABAAEAAAAAAAEAAQABAAMAAQABAAEAAwADAAEAAwADAAEAAwADAAMAAwADAAEAAQABAAEAAQABAAAAAAAAAAAAAAAAAAAAAAD//////////////////////f/9//3////7//3//f/7//3//f/9//3//f/9//3/////////////////AAD/////AAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAQABAAEAAQAAAAEAAAAAAAAAAQAAAAAAAQABAAEAAAABAAEAAAABAAEAAQABAAAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAA//8AAAAA/////wAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAAAAQABAAMAAQABAAMAAAABAAAAAQABAAAAAAAAAAEAAQAAAAAAAAABAAAAAAAAAAAAAAD//wAAAAD//////////wAA//////////8AAP///f//////////////AAAAAAAA//8AAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP////8AAAAAAAD//wAAAAAAAAAAAAAAAAAA//8AAAEAAAAAAAAAAAAAAAAAAAABAAAAAAABAAEAAwAAAAEAAQABAAEAAQABAAEAAQABAAEAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAAAAAAAAAAAAD/////AAD//wAAAAD//wAAAAD//wAA//8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAQABAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAAAAD/////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAQAAAAAAAAAAAAAAAAABAAEAAQABAAAAAAABAAAAAQAAAAAAAQABAAAAAAAAAAAAAAAAAP//AAD///////////3//f///////////wAA/f////////8AAP3///////3/////////AAAAAP////8AAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAAAAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAQAAAAAAAAAAAAEAAAABAAAAAAABAAAAAAABAAEAAAAAAAAAAQABAAAAAQABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAP//AAAAAP////////////8AAAAA//8AAAAAAAAAAAAA//8AAAAA/////wAAAAAAAAAAAAAAAP//AAAAAP//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQABAAEAAAABAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAA//8AAAAA//8AAAAA//8AAAAAAAAAAAAA//8AAAAA/////wAA/////////////wAAAAD//wAAAAAAAAAAAAD//wAAAAAAAAEAAAAAAAEAAQABAAAAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAEAAAABAAEAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAA////////AAAAAAAA//8AAAAAAAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAAAAAAEAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///////8AAP//AAD/////AAD//wAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAEAAQABAAEAAQABAAAAAQABAAEAAAAAAAEAAAAAAAAAAAABAAEAAAAAAAAAAAAAAAAAAAAAAAAA//8AAAAA/////////f////3//f/9//3//f/9//3////9//3///////3//f////3/////////////////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAQAAAAEAAQABAAAAAAAAAAAAAQABAAAAAQABAAEAAQABAAEAAQADAAMAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQABAAEAAQAAAAEAAAABAAEAAAABAAAAAAAAAAAAAAABAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAAAAAAAAAA//8AAAAA//8AAAAAAAAAAP///////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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WwBrAHQAfACFAIoAigCIAIcAfgBtAF4ATgA8AC8AIgAXAAwACQAKAAoADgAQABIAFAAUABQADAAFAAEA9v/s/+v/5f/c/97/4f/n/+v/8P/0//b/+f/5//f/9v/0/+v/5f/e/9b/1v/R/8z/zf/P/9b/4P/h/+P/8P/2//b/+/8AAP3/+f/2//L/7v/u/+z/7P/0//f/AAAHAAkADgAVABUAGwAbABUAFwAUAA4AEgAQAAwADgAQABIAFAAXABsAHwAfAB0AGQAQAAoAAAD0/+X/2v/M/7v/tP+s/6z/sP+u/7D/vf/G/9H/2P/e//D/8v/w//b/9v/3//n/9v/w//L/9v/0//T/9P/3//v/+//7//3//f/9//v/+f/3//T/9v/2//f///8BAAkAFQAiAC0AOABBAE4AVABVAFkAVQBVAEoAOgAzACIAFwAMAP//9//w/+n/5//l/+H/5f/n/+n/8v/y//T/+f/5//n///8AAAAAAQD//wEABwAAAAUACgAFAAkAAwD7//3/9v/u/+n/3v/e/9r/z//P/83/zf/R/9P/3P/j/+z/8v/5/wAAAQAFAAUACQAJAAAAAAAAAP3/+//2//D/9P/s/+7/8v/y//v//f/7/wMABwAFAAwAEgAOABQAFwAVAB0AGQAXABkAFwAbAB0AHwAgACQAIAAmACgAIAAiACAAHQAZABQAEAAOAAwABwAAAP3///8AAAAAAQAFAAcADAAUABcAGwAbABsAFwAUABUAEAADAP3/+f/w/+f/5f/e/9j/2P/Y/97/4//p/+z/7v/y//f/9v/2//v/+//2//b/9P/y//T/8P/u/+v/6//u/+7/7v/2//D/7P/s/+X/4f/j/97/1f/R/8z/zP/R/9b/3P/g/+f/7v/5/wAABQAQABQAGQAdABsAHwAfABcADAAHAAkABwAHAAkAAQD/////AQAHAAkACgAQABAADAASABIADgASABAADgAQABIAFAASABQAEgAMABAAEgAQAAwABwABAP//9v/y//D/6//l/+H/3v/g/+P/6f/r/+n/7P/y//n//f///wAAAQAAAAMAAQAFAAcABwADAAMAAQADAAwACgAJAAkACQAQAA4ADgAMAAoABwADAAcABwADAAUABwAKAAwADAASABUAGQAbAB8AIAAfACAAHQAbABsAGQAZABUAFAAQAA4AEgAQABIAEgASABcAFwAXABUAFQAVABAADAAHAAMAAQD9//T/7v/s/+f/4f/j/+D/3P/a/9r/2P/T/9X/1f/N/8//z//N/8//zf/P/9H/0f/V/9j/3P/h/+f/6//w//T/9//5////AwADAAMACQAJAAcACQAKABAACgAMABQAEAAXABUAFQAZABcAGwAZABsAGwAXABkAGQAVABUAEAAMAAwABwAFAAEAAAAAAP3//f/5//b/9v/3//f/9//y//b/9v/2//v/9//3//////8BAAEAAQAFAAUABQAMAAoADAAOAA4AEAAQAA4ACgAJAAUAAQAFAAEAAAD///v//f/5//f/+f/0//f/9//2//n/9v/0//f/9P/3//3/+f//////+////wAA//8AAAAAAwAJAAMABwAJAAkADgAOAA4AEgAUABQAFwAXABcAHQAbABsAHwAbABkAFwASABIAEgASABAACgADAAUAAQD///3/8v/0//T/7P/u/+f/4//l/+D/4P/c/9j/3P/c/9j/2P/Y/9r/3P/c/97/4f/g/+P/5//n/+v/7v/s//L/8v/0//n/+f/7////AAADAAUACQAMAAwAEAAXABQAFQAZABQAFwAZABcAGQAVABUAFQASABQAEAAQABAACgAJAA4ADAAHAAkACQAHAAkABwAFAAUABwADAAUABQAFAAoADAAJAAkACgAKAAoACQAKAAkABwAJAAkACQAKAAcABwAFAAMABQAFAAUAAwADAAcAAwAAAAEAAQAAAP////8AAP///f///wAA+//5//f/9P/0//T/8P/w/+7/7P/w//L/7v/s/+7/7P/r/+7/8P/y//b/9v/3//v/+//3//n/+f/7//3//f/9////AAAAAAAAAAAAAAAAAAD//wAAAAADAAcABQABAAMABwABAAEAAQABAAUAAwADAAEAAQAAAAEAAAAAAAAAAAABAP//AAABAAAAAAAAAAAA//////v//f8AAP///f///////f/9////////////AAAAAAAAAwADAAMABQABAAEAAwAAAAEAAQAAAAAAAQADAAAAAQADAAEAAQADAAUABwAHAAUAAwADAAcACQAJAAcAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQABAAAAAQAAAAAAAAAAAAAA//8AAAAA//8BAAEAAQAAAAAAAQABAAMAAQAAAAAAAQAAAAMAAwAAAAEAAQAAAAEAAAAAAP///f/7//v//f/9//3///////3//f///wAA/////wAAAAD//wAAAAAAAP3//f8AAP///f8AAP//+//7//3////9//3///////3///8AAP////8AAAAA/////wAAAAAAAAAAAAABAAAAAAADAAEAAAAAAAAA/////wAA///9/////////wAA/////wAA//8BAAMAAwAFAAUABwAFAAUABwAHAAUABwAHAAUAAQADAAMAAwADAAEAAAAAAAAAAAABAAAAAAAAAAAA/////wAAAAAAAAEAAwABAAAAAAAFAAMAAAAFAAMAAwAFAAEAAAAAAAAA///////////9////AAAAAAAAAAD///3/AAD/////AAD////////9//3///////3/AAAAAP//AAAAAP///f////3//f/9//n/+//9//v//f////v//f/9//v//f8AAAEAAAABAAEAAAABAAAAAQABAAEAAQABAAAAAQAFAAMAAQADAAEAAAAAAAAAAAD//wAA/////wAAAAAAAAAAAAAAAAAA/f///wAA/////wAAAAD9////AAD///////8BAAAA//8AAP//AAAAAAAAAAD//wAAAAAAAAAAAAAAAAAAAQADAAEAAwAFAAEAAQAAAAEAAQABAAUAAAABAAEAAQAFAAEAAQADAAAAAQAAAAAAAAD9/////f///////f8AAP////8AAAAAAQAAAAAAAAD//wAAAAD//wAAAAAAAAAAAQABAAAAAAD/////AAAAAAAAAAAAAAEAAAAAAP//AAAAAP3//////wAAAAAAAAEAAQAFAAMAAQADAAAAAAD///n//f/7///////7/wAA/////wEAAAAAAAAAAAAAAP//AAD//////f/9/wAAAAD//wAAAAABAAEAAwAFAAEAAAAAAAAAAQABAAAAAQAAAAAAAAAAAAEAAAAAAAEAAAAAAAEAAQABAAAA//8AAAAA//8AAAAAAAAAAP//AAD/////AAAAAP///////wAA/////wAAAAD/////AAAAAAAAAQAAAAEAAwABAAUAAQAAAAEAAQAAAAEAAQAAAAMAAQABAAMAAQAAAAAAAQABAAAAAAAAAAAA/////wAA/////wAA/f/9//////8AAAAAAAAAAAEAAAAAAAEAAwAHAAUAAwAFAAUAAwADAAEA//////v/+f/5//n/+f/7//3//f///wAAAAAAAAEAAQADAAEABQADAAEAAAAAAAAA//8AAAAAAAAAAAAA///9//3/+//7//v/+//7//v//f8AAAEAAQADAAMAAQAFAAMABQAFAAMABQAHAAMAAAABAAEA///////////9/wAA///9/////f////3//f////3///8AAAAAAQABAAEAAQADAAMAAwAFAAMAAwADAAEAAQABAAEAAwABAAEAAAABAAEAAAABAAAAAAD///v///8AAAAA//8AAP///f///wAA/////wAA///9//v//f///////f/7/////f/9//3/+//9//3/AAD///3/AAD/////AAABAAEAAQABAAEAAQADAAEAAwADAAUABQADAAUABwAJAAkABwAHAAcABwAHAAUABQADAAMAAwAAAAAAAAAAAP/////9//3//f/9//v/+//7//n/+//7//n/+f/3//f/9//3//v/9//2//n/9//3//n/+f/5//v/+f/7//3//f////3//f//////AAD/////AAAAAP//AwADAAEAAwABAAEAAwAFAAUABQAFAAUABQAFAAUAAwADAAEAAQADAAEAAQAFAAEABQAHAAMABwADAAUABwADAAMAAwADAAcABwAFAAcABQAFAAkABQAFAAUAAQAHAAcAAwAJAAMABwAJAAUABQAFAAUACQAFAAEABQABAAMABQD//wAAAQABAAAA/////wAA////////+//9///////9//v//f////v/9//9//n/+f/7//n/+//7//n/+//5//f/+f/7//3//f/3//v/+//9////+//9////+//9//3/+//9//////////3/+//9/////f/5//v///8AAP////////////8AAP//////////AAAAAP//AAD/////AAAAAAAA//8AAAMAAQABAAEAAQADAAEAAQAFAAMAAQAFAAMAAQAFAAMAAQAFAAMAAQAFAAMAAwADAAEAAQADAAMAAwAFAAMAAQABAAEAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAA//8AAAAAAAAAAAAAAAD//wAAAQAAAAAAAAAAAAEAAAABAAEAAAADAAMAAwAFAAMAAQADAAMAAQADAAUAAwAFAAMAAwADAAMABQADAAUABQABAAMAAwAAAAAAAAAAAP/////9///////7//v/+f/3//v/9//0//b/9//0//L/8v/y//T/9P/0//b/9v/2//n/+f/3//n/+//5//v/+f/3//n/+//3//n/+f/5//3/+//9/wAAAAAAAAEABQADAAMABQAFAAUAAwAFAAUAAwAHAAUAAQADAAMAAwADAAMABQAFAAMAAwAHAAUAAwAFAAUAAwAFAAcACQAJAAcABwAHAAUABwAJAAkACQAJAAkACgAJAAcACQAJAAcACgAKAAkACQAJAAoACQAHAAcABQAFAAMAAwABAAAAAAAAAP//////////AAD9/////f/5//v/+//5//f/+f/7//v/+//9//v/+//7//v/+//9//v/+f/7//f/9v/5//f/9v/3//f/9//3//b/9v/2//T/9P/2//b/9//3//f/9v/3//b/9v/3//f/+//7//v//f////////8AAAAAAAABAAMAAwADAAcABQAFAAcABQAFAAMABQAFAAMABQADAAUABQAFAAUABQAHAAUAAwADAAMABQAFAAMABQAHAAcABQAFAAcABwAHAAkABwAHAAcACQAHAAUACQAHAAUABwAFAAUAAwAHAAUAAQAFAAMAAQADAAAAAAABAAAAAAABAAAAAAD//wAAAAAAAP//AAD///3//f/9//v/+//9//v/+/////v/+f/9//v/+f////3/+//9/w==\" type=\"audio/wav\" />\n",
       "                    Your browser does not support the audio element.\n",
       "                </audio>\n",
       "              "
      ],
      "text/plain": [
       "<IPython.lib.display.Audio object>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "audio=Audio(data=data,rate=samplerate,autoplay=False)\n",
    "audio"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "460afa2a",
   "metadata": {},
   "source": [
    "Simple function to display a spectrogram. It is adapted from a SciPy example."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "8cd9c83f",
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_spectrogram(waveform,fs):\n",
    "    # Zero-padding for an audio waveform with less than 16,000 samples.\n",
    "    input_len = 16000\n",
    "    waveform = waveform[:input_len]\n",
    "    zero_padding = np.zeros(\n",
    "      16000 - waveform.shape[0],\n",
    "      dtype=np.float32)\n",
    "    mmax=np.max(np.abs(waveform))\n",
    "    \n",
    "    equal_length = np.hstack([waveform, zero_padding])\n",
    "    f, t, Zxx = scipy.signal.stft(equal_length, fs, nperseg=1000)\n",
    "    plt.pcolormesh(t, f, np.abs(Zxx), vmin=0, vmax=mmax/100, shading='gouraud')\n",
    "    plt.title('STFT Magnitude')\n",
    "    plt.ylabel('Frequency [Hz]')\n",
    "    plt.xlabel('Time [sec]')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "92eca740",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAk8AAAHHCAYAAACmzLxGAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy80BEi2AAAACXBIWXMAAA9hAAAPYQGoP6dpAAD+JklEQVR4nOy9ebwdRZn//6nqPufem+WGNQnIqigQwRlBB/J1GxWJEhyFMA6CGCDqgIERUEB+IoiiKH5dUL7AODqg3wEV5qsOElki64xERJQtCqIiUSEBheRCknvP6a7n90ctXd1d3eecu2Z53rz6nl6qq6r7XG598jxPPSWIiMAwDMMwDMN0hZzqDjAMwzAMw2xOsHhiGIZhGIbpARZPDMMwDMMwPcDiiWEYhmEYpgdYPDEMwzAMw/QAiyeGYRiGYZgeYPHEMAzDMAzTAyyeGIZhGIZheoDFE8MwDMMwTA+weGIYhpkkrrrqKggh8Ic//GFS2ttjjz1w/PHHT0pbDLM1weKJYRg89NBDOOqoo7D77rujv78fL3rRi/CWt7wFX/3qVwEAn/jEJyCE6Lj9/d//PQDg+OOPryxz0003dVWXEAJ33HFHZZ/32GMPCCFwyCGHBK//27/9m6vn5z//+Xi/snHjsssuw1VXXTXV3WAYpgfiqe4AwzBTy9133403vvGN2G233fD+978fc+fOxR//+Ef89Kc/xSWXXIJTTz0VRx55JPbaay93zwsvvICTTz4ZRxxxBI488kh3fs6cOW6/r68PX//610vt/c3f/A3+7//9v7lz3/rWt7B8+fLS+X333be27/39/bj99tuxevVqzJ07N3ft6quvRn9/P4aHhzu/hEniuOOOw9FHH42+vj537rLLLsMOO+zAFiKG2Yxg8cQwWzmf/vSnMWvWLNx7773YZpttcteefvppAMArXvEKvOIVr3Dn//KXv+Dkk0/GK17xCrznPe8J1hvHceW14vmf/vSnWL58eWX5Kl7zmtfg3nvvxXe/+1186EMfcuf/9Kc/4b//+79xxBFH4P/9v//XU50TSRRFiKJoqrvBMMwYYbcdw2zl/O53v8PLX/7yknACgNmzZ09+h3qgv78fRx55JK655prc+W9/+9vYdtttsWDBgtI9Dz74II4//ni8+MUvRn9/P+bOnYsTTzwRf/3rX0tl77jjDrzqVa9Cf38/XvKSl+Bf//VfnQvTRwiBU045BT/4wQ+w3377oa+vDy9/+ctx00035coVY5722GMPrFy5EnfeeWfJ9RlqJ1QHABARLrzwQuyyyy6YNm0a3vjGN2LlypXBd7Z27Vqcdtpp2HXXXdHX14e99toLn/vc56CUCpZnGKYMW54YZitn9913x4oVK/Dwww9jv/32G9e6//KXv+SOG40GZs2aNa5tHHPMMTj00EPxu9/9Di95yUsAANdccw2OOuooNBqNUvnly5fj97//PU444QTMnTsXK1euxNe+9jWsXLkSP/3pT51g+eUvf4m3vvWt2GmnnXDBBRcgTVN88pOfxI477hjsx//8z//ge9/7Hj74wQ9i5syZ+MpXvoJFixZh1apV2H777YP3fPnLX8app56KGTNm4GMf+xiAvOuzW8477zxceOGFOOyww3DYYYfhF7/4BQ499FC0Wq1cuQ0bNuANb3gD/vznP+Of//mfsdtuu+Huu+/GOeecg6eeegpf/vKXe26bYbZKiGGYrZpbbrmFoiiiKIpo/vz5dNZZZ9HNN99MrVar8p5nnnmGAND5558fvL548WICUNre8IY3BMsvXbqUev1ztPvuu9PChQspSRKaO3cufepTnyIiol/96lcEgO6880668sorCQDde++97r4NGzaU6vr2t79NAOiuu+5y597+9rfTtGnT6M9//rM799hjj1Ecx6W+AqBms0m//e1v3bkHHniAANBXv/pVd8725/HHH3fnXv7ylwffy/nnnx98J8U6nn76aWo2m7Rw4UJSSrly/9//9/8RAFq8eLE796lPfYqmT59Ov/nNb3J1fvSjH6UoimjVqlWl9hiGKcNuO4bZynnLW96CFStW4B/+4R/wwAMP4OKLL8aCBQvwohe9CNdff/2o6+3v78fy5ctz2xe+8IVx7LkmiiK8613vwre//W0AOlB81113xete97pg+YGBAbc/PDyMv/zlLzj44IMBAL/4xS8AAGma4sc//jHe+c53Yuedd3bl99prL7ztbW8L1nvIIYc4yxeg48QGBwfx+9//fmwP2IEf//jHaLVaOPXUU3NuvtNOO61U9rrrrsPrXvc6bLvttvjLX/7itkMOOQRpmuKuu+6a0L4yzJYCu+0YhsGrX/1qfO9730Or1cIDDzyA73//+/jSl76Eo446Cvfffz/mzZvXc51RFFWmERhvjjnmGHzlK1/BAw88gGuuuQZHH310MF4IAJ599llccMEF+M53vuMC4i3r1q0DoAPlN27cmJthaAmdA4DddtutdG7bbbfFc8891+vj9MQTTzwBAHjpS1+aO7/jjjti2223zZ177LHH8OCDD1a6Hovvg2GYMCyeGIZxNJtNvPrVr8arX/1qvOxlL8MJJ5yA6667Dueff/5Ud62Wgw46CC95yUtw2mmn4fHHH8cxxxxTWfZd73oX7r77bpx55pn427/9W8yYMQNKKbz1rW8dU9B01Sw6IhpVfVXiL03TUdUHAEopvOUtb8FZZ50VvP6yl71s1HUzzNYEiyeGYYK86lWvAgA89dRTU9yT7nj3u9+NCy+8EPvuuy/+9m//Nljmueeew6233ooLLrgA5513njv/2GOP5crNnj0b/f39+O1vf1uqI3RuLFSJJGs1Wrt2bW4mpLU0WXbffXcA+hle/OIXu/PPPPNMyer1kpe8BC+88MKkWQQZZkuFY54YZivn9ttvD1pHfvSjHwEA9t5778nu0qh43/veh/PPP782rspah4rPW5xlZl2OP/jBD/Dkk0+687/97W9x4403jl+nAUyfPh1r164tnbfxU34c0vr16/HNb34zV+6QQw5Bo9HAV7/61dxzhWbOvetd78KKFStw8803l66tXbsWSZKM8ikYZuuCLU8Ms5Vz6qmnYsOGDTjiiCOwzz77oNVq4e6778Z3v/td7LHHHjjhhBOmuotdsfvuu+MTn/hEbZnBwUG8/vWvx8UXX4x2u40XvehFuOWWW/D444+Xyn7iE5/ALbfcgte85jU4+eSTkaYpLr30Uuy33364//77x63fBx54IC6//HJceOGF2GuvvTB79my86U1vwqGHHorddtsNS5YswZlnnokoivDv//7v2HHHHbFq1Sp3/4477oiPfOQjuOiii3D44YfjsMMOwy9/+UvceOON2GGHHXJtnXnmmbj++utx+OGH4/jjj8eBBx6I9evX46GHHsJ//ud/4g9/+EPpHoZhyrB4YpitnP/9v/83rrvuOvzoRz/C1772NbRaLey222744Ac/iHPPPTeYPHNz5pprrsGpp56K//N//g+ICIceeihuvPHG3Kw6QIuaG2+8ER/5yEfw8Y9/HLvuuis++clP4te//jUeeeSRcevPeeedhyeeeAIXX3wxnn/+ebzhDW/Am970JjQa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JAHAf/7nf3bdgcceeww777wz+vv7MX/+fFx00UXYbbfdcN9996HdbuOQQw5xZffZZx/stttuTjytWLEC+++/f86Nt2DBApx88slYuXIlXvnKV2LFihW5OmyZ0047res+MgzTJblBzBMa9pRdBsWbIWZjkCiOPOsPss9cQLI3EPsiywoKXzABXtsSiO2SKZ6r0AqNSMIuR6IHdXLWGxIC1JTaikL6WECAhLb+KCGAPmksPrpekuSEilCATD0rk+umMILP9E8/lK7DE2EulYE1LnnGMZ0OwTxv0bVI2voi2woCdmFicz4nzDyLm//e/a/TBvzb9xlJQMaAjXXPvXM4cUmNODsp8tf092aDyFVm0bPLz2xsGcHml9GWJrRTlARRD1AoTYJHlq7LE1SeRbFWBtl3VTzt199FH5lNm67E0+23347tttuu60pvvPFGvOhFL+pY7qCDDsJVV12FvffeG0899RQuuOACvO51r8PDDz+M1atXo9lsYptttsndM2fOHKxevRoAsHr16pxwstfttboyQ0ND2LhxY9CaNjIygpGREXc8NDTU+aEZhkHeLYVsoBQCiCMTd1S04GiXDOJY35+bXeaJpbiwfIpveWonmdvPn3UVwnd5mfXuVBRBNSJtjWlIE6+jLTcqEmht29QCKhagSEJFEtQQoFhANbVIEIrMlllzZAqgpdB8ITGuJIJITDBzGxCKEG1MddyRsVA5y5yJj1LN2FsjzzyC1FYrgoAkoS1CKUHYQGmTY0qQArVbZoabtiAJUkBCQJpAjiQug0LP5CxqmbCwnwLWTViUDaSfxwaT2+8w970is8L535mQOri/EeXbLAk/ytxyvhByvxPZy6R8IXOysLRL8bk7MHpZx2wudCWe3vCGN/RU6Wtf+9quyr3tbW9z+694xStw0EEHYffdd8e1117btYtwIrjoootKgewMw3RBThjJgotLmgBi71oUuZleIo69gdAbBO2AmMr8jDSY6wogGZmZYNAuKt+NJbRrjfpiL9GlsSQZS1g6EAOxsYoJ7VJyy5YIQDZgEmlCtweASIDaAjRMkImezSdsrI0VSoogWgrRhhaQAjJVRkARZKpFjhxRmSWqYKWDgHEL2lmKIovP8ssqz93nrCqkA+GdVUdf11YsASCCaMgsX1KVUPAtRbYPAEoRHzl3q+6TSPzvyxPC1uJU0W7HaBIS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pegU31MbHATnBKh4rkqZQb4SCATl1yWD7DJJZkdGEYsmxqvtWiq++zEpZYbRdC2efv/732PPPffE7bffPq4deOihhzB//nwMDw9jxowZ+P73v4958+bh/vvvR7PZxDbbbJMrP2fOHKxevRoAsHr16pxwstfttboyQ0ND2LhxIwYGBkp9uuiii3DBBReM1yMyDGOpGGiF1QDdDsRVHreebzJtd1NB3eVRzdTzL9dnvK6uvUO7vkChQkIEP6P7ZDMpcU8sgJiJo+uYp5e+9KV45pln3PE//dM/lYK3R8Pee++N+++/H/fccw9OPvlkLF68GL/61a/GXO9YOOecc7Bu3Tq3/fGPf5zS/jDMls84uY9GsdEo7+stmL2i7eKSM6N5bbUbwY+1ykUFdZgs110DDLN10rV4KoZG/ehHP8L69evH3IFms4m99toLBx54IC666CL8zd/8DS655BLMnTsXrVYLa9euzZVfs2YN5s6dCwCYO3duScDZ405lBgcHg1YnAOjr63MzAO3GMMymjB9LFQgY7igwOpUJtecHQNdv+Vly2QK6MqoLnC4/xrjStfuKg7IZpkjPs+0mGqUURkZGcOCBB6LRaODWW2911x599FGsWrUK8+fPBwDMnz8fDz30EJ5++mlXZvny5RgcHMS8efNcGb8OW8bWwTDM5kSN0ABQqXZKY35WTojifRVbTmRRbiNVP/sul7ZAKb2R3qotOEVhFi4SmJDnPWe18Kn3NHYpkNj4xGyldB3zZP/VVDw3Fs455xy87W1vw2677Ybnn38e11xzDe644w7cfPPNmDVrFpYsWYIzzjgD2223HQYHB3Hqqadi/vz5OPjggwEAhx56KObNm4fjjjsOF198MVavXo1zzz0XS5cudYsUn3TSSbj00ktx1lln4cQTT8Rtt92Ga6+9FsuWLRtT3xmGmQLq/uQIUR171Cl7d9d/yyripqoveQUqqrJpGGqbpWA9pHOU193Y4VqxYVFoRxQykGfX3d9/v4nK91w+T547MXwLKzNm06Vr8UREOP74450oGR4exkknnVRKVfC9732v68affvppvPe978VTTz2FWbNm4RWveAVuvvlmvOUtbwEAfOlLX4KUEosWLcLIyAgWLFiAyy67zN0fRRFuuOEGnHzyyZg/fz6mT5+OxYsX45Of/KQrs+eee2LZsmU4/fTTcckll2CX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++yz9S1vecsx7vnJh49//ON63XXX6Uc/+lEF9Hd/93cPe/z999+v8/Pzeu211+qXv/xl/eAHP6jWWr399ts31W4iT6r6ohe9SK+66qruu3NOzznnHL3xxhvXPf41r3mN/r2/9/emtl100UX6z/7ZP3tC+3mqYLPzMYumaXTbtm166623PlFdPGVwNHPRNI2++MUv1n//7/+9XnHFFYk8bRE2Oxcf+tCH9IILLtCqqo5VF08ZbHYurrrqKv3BH/zBqW3XXnutvuQlL3lC+3mq4UjI08/+7M/qs571rKltr33ta/Wyyy7bVFunvNuuqiruvvtuLr300m6bMYZLL72Uu+66a91z7rrrrqnjAS677LINj084chzNfMxiZWWFuq63vBDkqYajnYtf/MVf5KyzzuInfuInjkU3TwkczVz8j//xP7j44ou56qqr2LVrF3/rb/0tbrjhBpxzx6rbJyWOZi5e/OIXc/fdd3euvfvvv5+Pf/zjvOpVrzomfU7osVXr9ymlML4eHn74YZxza8q07Nq1i69+9avrnrNnz551j9+zZ88T1s9TBUczH7N429vexjnnnLPmDyRhcziaufj0pz/Nf/gP/4F77rnnGPTw1MHRzMX999/PnXfeyY/92I/x8Y9/nK9//ev89E//NHVdc/311x+Lbp+UOJq5eP3rX8/DDz/M933f96GqNE3DT/7kT/JzP/dzx6LLCQNstH4vLS2xurrK3NzcEV3nlLc8JZxceO9738ttt93G7/7u7zIajY53d04pHDx4kMsvv5wPf/jDnHnmmce7O6c8vPecddZZ/Lt/9++48MILee1rX8t1113HzTfffLy7dsrhU5/6FDfccAO//uu/zuc//3k++tGP8rGPfYz3vOc9x7trCUeJU97ydOaZZ2KtZe/evVPb9+7dy+7du9c9Z/fu3Zs6PuHIcTTz0eJXfuVXeO9738sf/uEf8pznPOeJ7OYpgc3OxX333cdf/MVf8OpXv7rb5r0HIMsy7r33Xp72tKc9sZ0+SXE0fxdnn302eZ5jre22fc/3fA979uyhqiqKonhC+3yy4mjm4hd+4Re4/PLL+af/9J8C8OxnP5vl5WWuvPJKrrvuOoxJdoxjhY3W7+3btx+x1QmS5YmiKLjwwgu54447um3ee+644w4uvvjidc+5+OKLp44H+OQnP7nh8QlHjqOZD4D3ve99vOc97+H222/nhS984bHo6kmPzc7Fd3/3d/PFL36Re+65p3v9/b//9/mBH/gB7rnnHs4999xj2f2TCkfzd/GSl7yEr3/96x2BBfja177G2WefnYjT48DRzMXKysoagtSSWk3lZY8ptmz93lws+8mJ2267Tcuy1FtuuUW//OUv65VXXqk7d+7UPXv2qKrq5Zdfrm9/+9u74z/zmc9olmX6K7/yK/qVr3xFr7/++iRVsIXY7Hy8973v1aIo9Hd+53f0oYce6l4HDx48Xrdw0mCzczGLlG23ddjsXDz44IO6bds2vfrqq/Xee+/V3//939ezzjpLf+mXful43cJJg83OxfXXX6/btm3T3/qt39L7779fP/GJT+jTnvY0fc1rXnO8buGkwcGDB/ULX/iCfuELX1BA//W//tf6hS98Qf/yL/9SVVXf/va36+WXX94d30oV/MzP/Ix+5Stf0ZtuuilJFTwefPCDH9TzzjtPi6LQF73oRfp//+//7fZdcsklesUVV0wd/1/+y3/RZzzjGVoUhT7rWc/Sj33sY8e4xyc3NjMf559/vgJrXtdff/2x7/hJiM3+bQyRyNPWYrNz8X/+z//Riy66SMuy1AsuuED/5b/8l9o0zTHu9cmJzcxFXdf6rne9S5/2tKfpaDTSc889V3/6p39aH3300WPf8ZMMf/RHf7Tu///t+F9xxRV6ySWXrDnnec97nhZFoRdccIH+x//4Hzfdrqgmm2FCQkJCQkJCwpHilI95SkhISEhISEjYDBJ5SkhISEhISEjYBBJ5SkhISEhISEjYBBJ5SkhISEhISEjYBBJ5SkhISEhISEjYBBJ5SkhISEhISEjYBBJ5SkhISEhISEjYBBJ5SkhIOCHx4z/+4/zIj/zIMW/3lltuQUQQEa655ppj0ua73vWurs33v//9x6TNhISEo8cpXxg4ISHh2ENEDrv/+uuv51d/9VePW92v7du3c++997KwsHBM2nvrW9/KT/7kT/K93/u9x6S9hISEx4dEnhISEo45Hnrooe7zb//2b/POd76Te++9t9u2uLjI4uLi8egaEMjd7t27j1l77f22xWITEhJObCS3XUJCwjHH7t27u9eOHTs6stK+FhcX17jtvv/7v583v/nNXHPNNZx22mns2rWLD3/4wywvL/OGN7yBbdu28V3f9V38z//5P6fa+rM/+zP+7t/9uywuLrJr1y4uv/xyHn744U33+dd//dd5+tOfzmg0YteuXfzDf/gPu33ee2688Uae+tSnMjc3x3Of+1x+53d+Z+r8L33pS/zQD/0Q27dvZ9u2bbz0pS/lvvvu23Q/EhISjj8SeUpISPiOwa233sqZZ57Jn/zJn/DmN7+Zn/qpn+If/aN/xItf/GI+//nP84pXvILLL7+clZUVAPbv388P/uAP8vznP5/Pfe5z3H777ezdu5fXvOY1m2r3c5/7HP/8n/9zfvEXf5F7772X22+/nZe97GXd/htvvJHf/M3f5Oabb+ZLX/oSb3nLW/gn/+Sf8L/+1/8C4Jvf/CYve9nLKMuSO++8k7vvvps3vvGNNE2zdYOTkJBwzJDcdgkJCd8xeO5zn8vP//zPA/COd7yD9773vZx55pm86U1vAuCd73wnH/rQh/h//+//8bf/9t/m137t13j+85/PDTfc0F3jN37jNzj33HP52te+xjOe8YwjavfBBx9kYWGBH/qhH2Lbtm2cf/75PP/5zwdgMplwww038Id/+IdcfPHFAFxwwQV8+tOf5t/+23/LJZdcwk033cSOHTu47bbbyPMc4IjbTkhIOPGQyFNCQsJ3DJ7znOd0n621nHHGGTz72c/utu3atQuAb33rWwD86Z/+KX/0R3+0bvzUfffdd8QE5uUvfznnn38+F1xwAa985St55StfyY/+6I8yPz/P17/+dVZWVnj5y18+dU5VVR3Buueee3jpS1/aEaeEhITvbCTylJCQ8B2DWfIhIlPb2iw+7z0Ahw4d4tWvfjW//Mu/vOZaZ5999hG3u23bNj7/+c/zqU99ik984hO8853v5F3vehef/exnOXToEAAf+9jHePKTnzx1XlmWAMzNzR1xWwkJCSc+EnlKSEg4afGCF7yA//bf/htPecpTyLLH999dlmVceumlXHrppVx//fXs3LmTO++8k5e//OWUZcmDDz7IJZdcsu65z3nOc7j11lup6zpZnxISTgKkgPGEhISTFldddRX79u3jH//jf8xnP/tZ7rvvPv7gD/6AN7zhDTjnjvg6v//7v88HPvAB7rnnHv7yL/+S3/zN38R7zzOf+Uy2bdvGW9/6Vt7ylrdw6623ct999/H5z3+eD37wg9x6660AXH311SwtLfG6172Oz33uc/z5n/85/+k//acpeYaEhITvHCTLU0JCwkmLc845h8985jO87W1v4xWveAWTyYTzzz+fV77ylRhz5L8dd+7cyUc/+lHe9a53MR6PefrTn85v/dZv8axnPQuA97znPTzpSU/ixhtv5P7772fnzp284AUv4Od+7ucAOOOMM7jzzjv5mZ/5GS655BKstTzvec/jJS95yRNy3wkJCU8sRI+XhG9CQkLCCYhbbrmFa665hv379x/ztp/ylKdwzTXXHLOyMAkJCUeH5LZLSEhImMGBAwdYXFzkbW972zFp74YbbmBxcZEHH3zwmLSXkJDw+JAsTwkJCQkDHDx4kL179wLBXXfmmWc+4W3u27ePffv2AfCkJz2JHTt2POFtJiQkHD0SeUpISEhISEhI2ASS2y4hISEhISEhYRNI5CkhISEhISEhYRNI5CkhISEhISEhYRNI5CkhISEhISEhYRNI5CkhISEhISEhYRNI5CkhISEhISEhYRNI5CkhISEhISEhYRNI5CkhISEhISEhYRNI5CkhISEhISEhYRP4/wFPLUbLh/fZkQAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "get_spectrogram(data,16000)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "03037e1b",
   "metadata": {},
   "source": [
    "Display of the feature to compare with the spectrogram."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "c55f0d03",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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UiQGMURERKRIDGKIiIhIkRjEEBERkSIxiLmCN998E4mJidDr9cjIyMCuXbvknpJXWLp0KcaPH4/g4GBERUVh5syZOHbsWJcxzc3NePjhhxEREYGgoCD87Gc/Q1lZmUwz9j4vvfQSBEHAY489Zr+P19z5zp8/j1/84heIiIiAv78/UlNTkZeXZ39cFEU8++yziImJgb+/P7KysnDixAkZZ6xsFosFf/jDHzBo0CD4+/tj8ODBeOGFF7r05uE175sffvgBt956K2JjYyEIAtauXdvl8Z5c3+rqatx9990ICQlBWFgY5s+fj/r6escnI9IlrVq1StRqteK7774rHjp0SHzggQfEsLAwsaysTO6pKV52drb4z3/+UywoKBDz8/PFn/70p2JCQoJYX19vH/Pggw+K8fHxYk5OjpiXlydOnDhRnDRpkoyz9h67du0SExMTxdGjR4sLFy60389r7lzV1dXiwIEDxfvuu0/cuXOnePr0afHrr78WT548aR/z0ksviaGhoeLatWvF/fv3i9OnTxcHDRokNjU1yThz5XrxxRfFiIgIcf369eKZM2fENWvWiEFBQeIbb7xhH8Nr3jcbNmwQn376afHTTz8VAYifffZZl8d7cn2nTp0qpqWliTt27BC3bt0qDhkyRJwzZ47Dc2EQcxkTJkwQH374Yfv/WywWMTY2Vly6dKmMs/JO5eXlIgBxy5YtoiiKYk1Njejn5yeuWbPGPubIkSMiADE3N1euaXqFuro6cejQoeKmTZvEKVOm2IMYXnPne+KJJ8TJkydf8nGr1SoaDAbxL3/5i/2+mpoaUafTiR999JE7puh1pk2bJt5///1d7rv99tvFu+++WxRFXnNn+3EQ05Pre/jwYRGAuHv3bvuYr776ShQEQTx//rxD78/tpEswm83Ys2cPsrKy7PepVCpkZWUhNzdXxpl5p9raWgBAv379AAB79uxBa2trl+ufnJyMhIQEXv8+evjhhzFt2rQu1xbgNXeFdevWYdy4cZg1axaioqIwZswYvP322/bHz5w5A6PR2OWah4aGIiMjg9e8lyZNmoScnBwcP34cALB//35s27YNN998MwBec1fryfXNzc1FWFgYxo0bZx+TlZUFlUqFnTt3OvR+XtEA0hUqKythsVgQHR3d5f7o6GgcPXpUpll5J6vVisceewxXX301UlJSAABGoxFarRZhYWFdxkZHR8NoNMowS++watUq7N27F7t3777oMV5z5zt9+jTeeustLFq0CE899RR2796NRx99FFqtFnPnzrVf1+7+neE1750nn3wSJpMJycnJUKvVsFgsePHFF3H33XcDAK+5i/Xk+hqNRkRFRXV5XKPRoF+/fg7/GTCIIdk9/PDDKCgowLZt2+SeilcrLi7GwoULsWnTJuj1ermn4xOsVivGjRuHP//5zwCAMWPGoKCgAMuXL8fcuXNlnp13+vjjj/Hhhx9i5cqVGDVqFPLz8/HYY48hNjaW19wLcTvpEiIjI6FWqy86mVFWVgaDwSDTrLzPggULsH79enz//fcYMGCA/X6DwQCz2Yyampou43n9e2/Pnj0oLy/HVVddBY1GA41Ggy1btuCvf/0rNBoNoqOjec2dLCYmBiNHjuxy34gRI1BUVAQA9uvKf2ecZ/HixXjyySdx5513IjU1Fffccw8ef/xxLF26FACvuav15PoaDAaUl5d3ebytrQ3V1dUO/xkwiLkErVaLsWPHIicnx36f1WpFTk4OMjMzZZyZdxBFEQsWLMBnn32G7777DoMGDery+NixY+Hn59fl+h87dgxFRUW8/r10ww034ODBg8jPz7ffxo0bh7vvvtv+37zmznX11VdfVDrg+PHjGDhwIABg0KBBMBgMXa65yWTCzp07ec17qbGxESpV1682tVoNq9UKgNfc1XpyfTMzM1FTU4M9e/bYx3z33XewWq3IyMhw7A37lJbs5VatWiXqdDrxvffeEw8fPiz+6le/EsPCwkSj0Sj31BTvoYceEkNDQ8XNmzeLpaWl9ltjY6N9zIMPPigmJCSI3333nZiXlydmZmaKmZmZMs7a+3Q+nSSKvObOtmvXLlGj0YgvvviieOLECfHDDz8UAwICxH//+9/2MS+99JIYFhYmfv755+KBAwfEGTNm8LhvH8ydO1eMi4uzH7H+9NNPxcjISPH3v/+9fQyved/U1dWJ+/btE/ft2ycCEF999VVx3759YmFhoSiKPbu+U6dOFceMGSPu3LlT3LZtmzh06FAesXaFv/3tb2JCQoKo1WrFCRMmiDt27JB7Sl4BQLe3f/7zn/YxTU1N4m9+8xsxPDxcDAgIEG+77TaxtLRUvkl7oR8HMbzmzvfFF1+IKSkpok6nE5OTk8UVK1Z0edxqtYp/+MMfxOjoaFGn04k33HCDeOzYMZlmq3wmk0lcuHChmJCQIOr1ejEpKUl8+umnxZaWFvsYXvO++f7777v993vu3LmiKPbs+lZVVYlz5swRg4KCxJCQEHHevHliXV2dw3MRRLFTGUMiIiIihWBODBERESkSgxgiIiJSJAYxREREpEgMYoiIiEiRGMQQERGRIjGIISIiIkViEENERESKxCCGiIiIFIlBDBERESkSgxgiIiJSJAYxREREpEgMYoiIiEiR/j+Zl61b0AUN5QAAAABJRU5ErkJggg==",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "feat=feature(data)\n",
    "plt.plot(feat)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8b798aea",
   "metadata": {},
   "source": [
    "## Patterns for training\n",
    "\n",
    "Now we generate the arrays needed to train and test the model.\n",
    "We have an array of feature : X_array.\n",
    "An array of label ID : y\n",
    "\n",
    "and similar arrays for the tests."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "647ecb32",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1600, 98)"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X=np.array([x.feature for x in train_patterns])\n",
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "2603ecb9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1600,)"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y=np.array([x.label for x in train_patterns])\n",
    "y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "658b7553",
   "metadata": {},
   "outputs": [],
   "source": [
    "y_test = [x.label for x in test_patterns]\n",
    "X_test = [x.feature for x in test_patterns]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "79909063",
   "metadata": {},
   "source": [
    "## Logistic Regression\n",
    "\n",
    "We have chosen to use a simple logistic regression. We are doing a randomized search on the hyperparameter space."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "e1fdf0ef",
   "metadata": {},
   "outputs": [],
   "source": [
    "distributionsb = dict(C=uniform(loc=1, scale=1000)\n",
    "                    )\n",
    "reg = LogisticRegression(penalty=\"l1\", solver=\"saga\", tol=0.1)\n",
    "clfb=RandomizedSearchCV(reg, distributionsb,random_state=0,n_iter=50).fit(X, y)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "bca2dabd",
   "metadata": {},
   "source": [
    "We are using the best estimator found during the randomized search:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "fddd7782",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<style>#sk-container-id-1 {\n",
       "  /* Definition of color scheme common for light and dark mode */\n",
       "  --sklearn-color-text: black;\n",
       "  --sklearn-color-line: gray;\n",
       "  /* Definition of color scheme for unfitted estimators */\n",
       "  --sklearn-color-unfitted-level-0: #fff5e6;\n",
       "  --sklearn-color-unfitted-level-1: #f6e4d2;\n",
       "  --sklearn-color-unfitted-level-2: #ffe0b3;\n",
       "  --sklearn-color-unfitted-level-3: chocolate;\n",
       "  /* Definition of color scheme for fitted estimators */\n",
       "  --sklearn-color-fitted-level-0: #f0f8ff;\n",
       "  --sklearn-color-fitted-level-1: #d4ebff;\n",
       "  --sklearn-color-fitted-level-2: #b3dbfd;\n",
       "  --sklearn-color-fitted-level-3: cornflowerblue;\n",
       "\n",
       "  /* Specific color for light theme */\n",
       "  --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
       "  --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
       "  --sklearn-color-icon: #696969;\n",
       "\n",
       "  @media (prefers-color-scheme: dark) {\n",
       "    /* Redefinition of color scheme for dark theme */\n",
       "    --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
       "    --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
       "    --sklearn-color-icon: #878787;\n",
       "  }\n",
       "}\n",
       "\n",
       "#sk-container-id-1 {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 pre {\n",
       "  padding: 0;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-hidden--visually {\n",
       "  border: 0;\n",
       "  clip: rect(1px 1px 1px 1px);\n",
       "  clip: rect(1px, 1px, 1px, 1px);\n",
       "  height: 1px;\n",
       "  margin: -1px;\n",
       "  overflow: hidden;\n",
       "  padding: 0;\n",
       "  position: absolute;\n",
       "  width: 1px;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-dashed-wrapped {\n",
       "  border: 1px dashed var(--sklearn-color-line);\n",
       "  margin: 0 0.4em 0.5em 0.4em;\n",
       "  box-sizing: border-box;\n",
       "  padding-bottom: 0.4em;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-container {\n",
       "  /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
       "     but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
       "     so we also need the `!important` here to be able to override the\n",
       "     default hidden behavior on the sphinx rendered scikit-learn.org.\n",
       "     See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
       "  display: inline-block !important;\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-text-repr-fallback {\n",
       "  display: none;\n",
       "}\n",
       "\n",
       "div.sk-parallel-item,\n",
       "div.sk-serial,\n",
       "div.sk-item {\n",
       "  /* draw centered vertical line to link estimators */\n",
       "  background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
       "  background-size: 2px 100%;\n",
       "  background-repeat: no-repeat;\n",
       "  background-position: center center;\n",
       "}\n",
       "\n",
       "/* Parallel-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item::after {\n",
       "  content: \"\";\n",
       "  width: 100%;\n",
       "  border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
       "  flex-grow: 1;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel {\n",
       "  display: flex;\n",
       "  align-items: stretch;\n",
       "  justify-content: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  position: relative;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:first-child::after {\n",
       "  align-self: flex-end;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:last-child::after {\n",
       "  align-self: flex-start;\n",
       "  width: 50%;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-parallel-item:only-child::after {\n",
       "  width: 0;\n",
       "}\n",
       "\n",
       "/* Serial-specific style estimator block */\n",
       "\n",
       "#sk-container-id-1 div.sk-serial {\n",
       "  display: flex;\n",
       "  flex-direction: column;\n",
       "  align-items: center;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  padding-right: 1em;\n",
       "  padding-left: 1em;\n",
       "}\n",
       "\n",
       "\n",
       "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
       "clickable and can be expanded/collapsed.\n",
       "- Pipeline and ColumnTransformer use this feature and define the default style\n",
       "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
       "*/\n",
       "\n",
       "/* Pipeline and ColumnTransformer style (default) */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable {\n",
       "  /* Default theme specific background. It is overwritten whether we have a\n",
       "  specific estimator or a Pipeline/ColumnTransformer */\n",
       "  background-color: var(--sklearn-color-background);\n",
       "}\n",
       "\n",
       "/* Toggleable label */\n",
       "#sk-container-id-1 label.sk-toggleable__label {\n",
       "  cursor: pointer;\n",
       "  display: block;\n",
       "  width: 100%;\n",
       "  margin-bottom: 0;\n",
       "  padding: 0.5em;\n",
       "  box-sizing: border-box;\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:before {\n",
       "  /* Arrow on the left of the label */\n",
       "  content: \"▸\";\n",
       "  float: left;\n",
       "  margin-right: 0.25em;\n",
       "  color: var(--sklearn-color-icon);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 label.sk-toggleable__label-arrow:hover:before {\n",
       "  color: var(--sklearn-color-text);\n",
       "}\n",
       "\n",
       "/* Toggleable content - dropdown */\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content {\n",
       "  max-height: 0;\n",
       "  max-width: 0;\n",
       "  overflow: hidden;\n",
       "  text-align: left;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content pre {\n",
       "  margin: 0.2em;\n",
       "  border-radius: 0.25em;\n",
       "  color: var(--sklearn-color-text);\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-toggleable__content.fitted pre {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
       "  /* Expand drop-down */\n",
       "  max-height: 200px;\n",
       "  max-width: 100%;\n",
       "  overflow: auto;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
       "  content: \"▾\";\n",
       "}\n",
       "\n",
       "/* Pipeline/ColumnTransformer-specific style */\n",
       "\n",
       "#sk-container-id-1 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator-specific style */\n",
       "\n",
       "/* Colorize estimator box */\n",
       "#sk-container-id-1 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label label.sk-toggleable__label,\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  /* The background is the default theme color */\n",
       "  color: var(--sklearn-color-text-on-default-background);\n",
       "}\n",
       "\n",
       "/* On hover, darken the color of the background */\n",
       "#sk-container-id-1 div.sk-label:hover label.sk-toggleable__label {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "/* Label box, darken color on hover, fitted */\n",
       "#sk-container-id-1 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
       "  color: var(--sklearn-color-text);\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Estimator label */\n",
       "\n",
       "#sk-container-id-1 div.sk-label label {\n",
       "  font-family: monospace;\n",
       "  font-weight: bold;\n",
       "  display: inline-block;\n",
       "  line-height: 1.2em;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-label-container {\n",
       "  text-align: center;\n",
       "}\n",
       "\n",
       "/* Estimator-specific */\n",
       "#sk-container-id-1 div.sk-estimator {\n",
       "  font-family: monospace;\n",
       "  border: 1px dotted var(--sklearn-color-border-box);\n",
       "  border-radius: 0.25em;\n",
       "  box-sizing: border-box;\n",
       "  margin-bottom: 0.5em;\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-0);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-0);\n",
       "}\n",
       "\n",
       "/* on hover */\n",
       "#sk-container-id-1 div.sk-estimator:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-2);\n",
       "}\n",
       "\n",
       "#sk-container-id-1 div.sk-estimator.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-2);\n",
       "}\n",
       "\n",
       "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
       "\n",
       "/* Common style for \"i\" and \"?\" */\n",
       "\n",
       ".sk-estimator-doc-link,\n",
       "a:link.sk-estimator-doc-link,\n",
       "a:visited.sk-estimator-doc-link {\n",
       "  float: right;\n",
       "  font-size: smaller;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1em;\n",
       "  height: 1em;\n",
       "  width: 1em;\n",
       "  text-decoration: none !important;\n",
       "  margin-left: 1ex;\n",
       "  /* unfitted */\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted,\n",
       "a:link.sk-estimator-doc-link.fitted,\n",
       "a:visited.sk-estimator-doc-link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
       ".sk-estimator-doc-link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover,\n",
       "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
       ".sk-estimator-doc-link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "/* Span, style for the box shown on hovering the info icon */\n",
       ".sk-estimator-doc-link span {\n",
       "  display: none;\n",
       "  z-index: 9999;\n",
       "  position: relative;\n",
       "  font-weight: normal;\n",
       "  right: .2ex;\n",
       "  padding: .5ex;\n",
       "  margin: .5ex;\n",
       "  width: min-content;\n",
       "  min-width: 20ex;\n",
       "  max-width: 50ex;\n",
       "  color: var(--sklearn-color-text);\n",
       "  box-shadow: 2pt 2pt 4pt #999;\n",
       "  /* unfitted */\n",
       "  background: var(--sklearn-color-unfitted-level-0);\n",
       "  border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link.fitted span {\n",
       "  /* fitted */\n",
       "  background: var(--sklearn-color-fitted-level-0);\n",
       "  border: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "\n",
       ".sk-estimator-doc-link:hover span {\n",
       "  display: block;\n",
       "}\n",
       "\n",
       "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link {\n",
       "  float: right;\n",
       "  font-size: 1rem;\n",
       "  line-height: 1em;\n",
       "  font-family: monospace;\n",
       "  background-color: var(--sklearn-color-background);\n",
       "  border-radius: 1rem;\n",
       "  height: 1rem;\n",
       "  width: 1rem;\n",
       "  text-decoration: none;\n",
       "  /* unfitted */\n",
       "  color: var(--sklearn-color-unfitted-level-1);\n",
       "  border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted {\n",
       "  /* fitted */\n",
       "  border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
       "  color: var(--sklearn-color-fitted-level-1);\n",
       "}\n",
       "\n",
       "/* On hover */\n",
       "#sk-container-id-1 a.estimator_doc_link:hover {\n",
       "  /* unfitted */\n",
       "  background-color: var(--sklearn-color-unfitted-level-3);\n",
       "  color: var(--sklearn-color-background);\n",
       "  text-decoration: none;\n",
       "}\n",
       "\n",
       "#sk-container-id-1 a.estimator_doc_link.fitted:hover {\n",
       "  /* fitted */\n",
       "  background-color: var(--sklearn-color-fitted-level-3);\n",
       "}\n",
       "</style><div id=\"sk-container-id-1\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>LogisticRegression(C=np.float64(682.8202991034834), penalty=&#x27;l1&#x27;, solver=&#x27;saga&#x27;,\n",
       "                   tol=0.1)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-1\" type=\"checkbox\" checked><label for=\"sk-estimator-id-1\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">&nbsp;&nbsp;LogisticRegression<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.5/modules/generated/sklearn.linear_model.LogisticRegression.html\">?<span>Documentation for LogisticRegression</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>LogisticRegression(C=np.float64(682.8202991034834), penalty=&#x27;l1&#x27;, solver=&#x27;saga&#x27;,\n",
       "                   tol=0.1)</pre></div> </div></div></div></div>"
      ],
      "text/plain": [
       "LogisticRegression(C=np.float64(682.8202991034834), penalty='l1', solver='saga',\n",
       "                   tol=0.1)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clfb.best_estimator_"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6a7ffeb1",
   "metadata": {},
   "source": [
    "The confusion matrix is generated from the test patterns to check the behavior of the classifier:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "eb6facde",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<sklearn.metrics._plot.confusion_matrix.ConfusionMatrixDisplay at 0x287351192e0>"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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xo0bpwYNGqhGjRqKjY3VhAkTVFxcXOq6+fPnKzo6WjVq1FC/fv2Ul5fncP7NN99UfHy8/Pz8FBcXp9dee83pWABUDBIZ4E/C399f586ds39et26dMjIytHbtWq1cuVLFxcXq0qWLatasqU2bNumrr75SYGCgunbtar9v5syZSklJ0T/+8Q9t3rxZOTk5+uijjy753AceeEDvvPOOZs+erfT0dM2fP1+BgYGKjo7WBx98IEnKyMjQ8ePH9corr0iSpk+frsWLF2vevHn64YcfNGrUKN13331KTU2VdD7h6t27t3r06KG0tDQNHjxY48ePd/rPpGbNmkpJSdHevXv1yiuvaMGCBZo1a5bDNfv379eyZcu0YsUKrV69Wt99952GDh1qP79kyRJNnDhR06ZNU3p6up5//nlNmDBBixYtcjoeABXAAGA6AwcONHr27GkYhmHYbDZj7dq1hq+vrzFmzBj7+fDwcKOoqMh+zz//+U+jYcOGhs1ms7cVFRUZ/v7+xueff24YhmFERkYaM2bMsJ8vLi42rrnmGvuzDMMwOnbsaIwcOdIwDMPIyMgwJBlr164tM87169cbkoxTp07Z2woLC40aNWoYW7Zscbj24YcfNu655x7DMAzjqaeeMho1auRwfty4caX6+j1JxkcffXTR8y+99JLRqlUr++dnn33W8PT0NH7++Wd722effWZ4eHgYx48fNwzDMK677jpj6dKlDv0899xzRrt27QzDMIxDhw4Zkozvvvvuos8FUHGYIwOY1MqVKxUYGKji4mLZbDbde++9mjRpkv18kyZNHObF7Nq1S/v371fNmjUd+iksLNSBAweUl5en48ePq23btvZzXl5eat26danhpQvS0tLk6empjh07ljvu/fv36+zZs7r11lsd2s+dO6cWLVpIktLT0x3ikKR27dqV+xkXvPfee5o9e7YOHDiggoIClZSUKCgoyOGamJgYXX311Q7PsdlsysjIUM2aNXXgwAE9/PDDGjJkiP2akpISBQcHOx0PAPcjkQFMqlOnTnr99dfl4+OjqKgoeXk5/t85ICDA4XNBQYFatWqlJUuWlOrrL3/5y2XF4O/v7/Q9BQUFkqRVq1Y5JBDS+Xk/7rJ161YlJSVp8uTJ6tKli4KDg/Xuu+9q5syZTse6YMGCUomVp6en22IFcPlIZACTCggIUL169cp9fcuWLfXee++pdu3apaoSF0RGRmrbtm3q0KGDpPOVhx07dqhly5ZlXt+kSRPZbDalpqYqMTGx1PkLFSGr1Wpva9SokXx9fZWZmXnRSk58fLx94vIFX3/99R9/yd/YsmWL6tSpo6efftreduTIkVLXZWZm6tixY4qKirI/x8PDQw0bNlR4eLiioqJ08OBBJSUlOfV8AJWDyb5ANZGUlKSrrrpKPXv21KZNm3To0CFt2LBBI0aM0M8//yxJGjlypF544QUtX75cP/74o4YOHXrJPWCuvfZaDRw4UA899JCWL19u73PZsmWSpDp16shisWjlypX697//rYKCAtWsWVNjxozRqFGjtGjRIh04cEA7d+7UnDlz7BNo//a3v2nfvn168sknlZGRoaVLlyolJcWp71u/fn1lZmbq3Xff1YEDBzR79uwyJy77+flp4MCB2rVrlzZt2qQRI0aoX79+ioiIkCRNnjxZ06dP1+zZs/XTTz9p9+7dWrhwof7+9787FQ+AikEiA1QTNWrU0MaNGxUTE6PevXsrPj5eDz/8sAoLC+0VmieeeEL333+/Bg4cqHbt2qlmzZq66667Ltnv66+/rr59+2ro0KGKi4vTkCFDdObMGUnS1VdfrcmTJ2v8+PEKDw/X8OHDJUnPPfecJkyYoOnTpys+Pl5du3bVqlWrVLduXUnn56188MEHWr58uZo1a6Z58+bp+eefd+r73nnnnRo1apSGDx+u5s2ba8uWLZowYUKp6+rVq6fevXure/fuuu2229S0aVOH5dWDBw/Wm2++qYULF6pJkybq2LGjUlJS7LECqFoW42Kz+AAAAK5wVGQAAIBpkcgAAADTIpEBAACmRSIDAABMi0QGAACYFokMAAAwLRIZAABgWiQyAADAtEhkAACAaZHIAAAA0yKRAQAApvX/AYh1C3bZeWf7AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_pred = clfb.predict(X_test)\n",
    "labels=[\"Unknown\"] + to_keep\n",
    "ConfusionMatrixDisplay.from_predictions(y_test, y_pred,display_labels=labels)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "76b17c7d",
   "metadata": {},
   "source": [
    "We compute the final score. 0.8 is really the minimum acceptable value for this kind of demo.\n",
    "With the zcr feature, if you try to detect `Yes`, `No`, `Unknown`, you'll get a score of around 0.6 which is very bad."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "de8460b1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8175"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clfb.score(X_test, y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9ba6739f",
   "metadata": {},
   "source": [
    "We can now save the model so that next time we want to play with the notebook and test the CMSIS-DSP implementation we do not have to retrain the model:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "ea4ae8f8",
   "metadata": {},
   "outputs": [],
   "source": [
    "with open(\"logistic.pickle\",\"wb\") as f:\n",
    "    s = pickle.dump(clfb,f)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "aab3aaf2",
   "metadata": {},
   "source": [
    "And we can reload the saved model:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 197,
   "id": "c4811945",
   "metadata": {},
   "outputs": [],
   "source": [
    "with open(\"logistic.pickle\",\"rb\") as f:\n",
    "    clfb=pickle.load(f)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a9c1ef1b",
   "metadata": {},
   "source": [
    "## Reference implementation with Matrix"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ef865bc5",
   "metadata": {},
   "source": [
    "This is the reference implementation which will be used to build the CMSIS-DSP implementation. We are no more using the scikit-learn predict function instead we are using an implementation of predict using linear algebra. It should give the same results."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "f6e861cf",
   "metadata": {},
   "outputs": [],
   "source": [
    "def predict(feat):\n",
    "    coef=clfb.best_estimator_.coef_\n",
    "    intercept=clfb.best_estimator_.intercept_\n",
    "    \n",
    "    res=np.dot(coef,feat) + intercept\n",
    "    \n",
    "    if res<0:\n",
    "        return(-1)\n",
    "    else:\n",
    "        return(0)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "918afd57",
   "metadata": {},
   "source": [
    "And like in the code above with scikit-learn, we are checking the result with the confusion matrix and the score. It should give the same results:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "66e69345",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<sklearn.metrics._plot.confusion_matrix.ConfusionMatrixDisplay at 0x2874eb6ec60>"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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xo0bpwYNGqhGjRqKjY3VhAkTVFxcXOq6+fPnKzo6WjVq1FC/fv2Ul5fncP7NN99UfHy8/Pz8FBcXp9dee83pWABUDBIZ4E/C399f586ds39et26dMjIytHbtWq1cuVLFxcXq0qWLatasqU2bNumrr75SYGCgunbtar9v5syZSklJ0T/+8Q9t3rxZOTk5+uijjy753AceeEDvvPOOZs+erfT0dM2fP1+BgYGKjo7WBx98IEnKyMjQ8ePH9corr0iSpk+frsWLF2vevHn64YcfNGrUKN13331KTU2VdD7h6t27t3r06KG0tDQNHjxY48ePd/rPpGbNmkpJSdHevXv1yiuvaMGCBZo1a5bDNfv379eyZcu0YsUKrV69Wt99952GDh1qP79kyRJNnDhR06ZNU3p6up5//nlNmDBBixYtcjoeABXAAGA6AwcONHr27GkYhmHYbDZj7dq1hq+vrzFmzBj7+fDwcKOoqMh+zz//+U+jYcOGhs1ms7cVFRUZ/v7+xueff24YhmFERkYaM2bMsJ8vLi42rrnmGvuzDMMwOnbsaIwcOdIwDMPIyMgwJBlr164tM87169cbkoxTp07Z2woLC40aNWoYW7Zscbj24YcfNu655x7DMAzjqaeeMho1auRwfty4caX6+j1JxkcffXTR8y+99JLRqlUr++dnn33W8PT0NH7++Wd722effWZ4eHgYx48fNwzDMK677jpj6dKlDv0899xzRrt27QzDMIxDhw4Zkozvvvvuos8FUHGYIwOY1MqVKxUYGKji4mLZbDbde++9mjRpkv18kyZNHObF7Nq1S/v371fNmjUd+iksLNSBAweUl5en48ePq23btvZzXl5eat26danhpQvS0tLk6empjh07ljvu/fv36+zZs7r11lsd2s+dO6cWLVpIktLT0x3ikKR27dqV+xkXvPfee5o9e7YOHDiggoIClZSUKCgoyOGamJgYXX311Q7PsdlsysjIUM2aNXXgwAE9/PDDGjJkiP2akpISBQcHOx0PAPcjkQFMqlOnTnr99dfl4+OjqKgoeXk5/t85ICDA4XNBQYFatWqlJUuWlOrrL3/5y2XF4O/v7/Q9BQUFkqRVq1Y5JBDS+Xk/7rJ161YlJSVp8uTJ6tKli4KDg/Xuu+9q5syZTse6YMGCUomVp6en22IFcPlIZACTCggIUL169cp9fcuWLfXee++pdu3apaoSF0RGRmrbtm3q0KGDpPOVhx07dqhly5ZlXt+kSRPZbDalpqYqMTGx1PkLFSGr1Wpva9SokXx9fZWZmXnRSk58fLx94vIFX3/99R9/yd/YsmWL6tSpo6efftreduTIkVLXZWZm6tixY4qKirI/x8PDQw0bNlR4eLiioqJ08OBBJSUlOfV8AJWDyb5ANZGUlKSrrrpKPXv21KZNm3To0CFt2LBBI0aM0M8//yxJGjlypF544QUtX75cP/74o4YOHXrJPWCuvfZaDRw4UA899JCWL19u73PZsmWSpDp16shisWjlypX697//rYKCAtWsWVNjxozRqFGjtGjRIh04cEA7d+7UnDlz7BNo//a3v2nfvn168sknlZGRoaVLlyolJcWp71u/fn1lZmbq3Xff1YEDBzR79uwyJy77+flp4MCB2rVrlzZt2qQRI0aoX79+ioiIkCRNnjxZ06dP1+zZs/XTTz9p9+7dWrhwof7+9787FQ+AikEiA1QTNWrU0MaNGxUTE6PevXsrPj5eDz/8sAoLC+0VmieeeEL333+/Bg4cqHbt2qlmzZq66667Ltnv66+/rr59+2ro0KGKi4vTkCFDdObMGUnS1VdfrcmTJ2v8+PEKDw/X8OHDJUnPPfecJkyYoOnTpys+Pl5du3bVqlWrVLduXUnn56188MEHWr58uZo1a6Z58+bp+eefd+r73nnnnRo1apSGDx+u5s2ba8uWLZowYUKp6+rVq6fevXure/fuuu2229S0aVOH5dWDBw/Wm2++qYULF6pJkybq2LGjUlJS7LECqFoW42Kz+AAAAK5wVGQAAIBpkcgAAADTIpEBAACmRSIDAABMi0QGAACYFokMAAAwLRIZAABgWiQyAADAtEhkAACAaZHIAAAA0yKRAQAApvX/AYh1C3bZeWf7AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_pred_ref = [predict(x) for x in X_test]\n",
    "labels=[\"Unknown\"] + to_keep\n",
    "ConfusionMatrixDisplay.from_predictions(y_test, y_pred_ref,display_labels=labels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "887d714a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8175"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.count_nonzero(np.equal(y_test,y_pred_ref))/len(y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6bbd0d3b",
   "metadata": {},
   "source": [
    "## CMSIS-DSP implementation\n",
    "\n",
    "Now we are ready to implement the code using CMSIS-DSP API. Once we have a running implementation in Python, writing the C code will be easy since the API is the same.\n",
    "\n",
    "We are testing 3 implementations here : F32, Q31 and Q15.\n",
    "At the end, we will check that Q15 is giving good enough results and thus can be implemented in C for the Arduino."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a801479c",
   "metadata": {},
   "source": [
    "### F32 Implementation\n",
    "\n",
    "It will be very similar to the implementation above with matrix but will instead use the CMSIS-DSP API."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "d861ee1c",
   "metadata": {},
   "outputs": [],
   "source": [
    "coef_f32=clfb.best_estimator_.coef_\n",
    "intercept_f32=clfb.best_estimator_.intercept_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "1e50c5b1",
   "metadata": {},
   "outputs": [],
   "source": [
    "def dsp_zcr(w):\n",
    "    m = dsp.arm_mean_f32(w)\n",
    "    m = -m\n",
    "    w = dsp.arm_offset_f32(w,m)\n",
    "    f=w[:-1]\n",
    "    g=w[1:]\n",
    "    k=np.count_nonzero(np.logical_and(f*g<0, g>f))\n",
    "    return(1.0*k/len(f))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fa0b092d",
   "metadata": {},
   "source": [
    "For the FIR, CMSIS-DSP is using a FIR instance structure and thus we need to define it"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "3313b384",
   "metadata": {},
   "outputs": [],
   "source": [
    "firf32 = dsp.arm_fir_instance_f32()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "480631ce",
   "metadata": {},
   "outputs": [],
   "source": [
    "def dsp_feature(data):\n",
    "    samplerate=16000\n",
    "    input_len = 16000\n",
    "    \n",
    "    waveform = data[:input_len]\n",
    "    \n",
    "    zero_padding = np.zeros(\n",
    "      16000 - waveform.shape[0],\n",
    "      dtype=np.float32)\n",
    "   \n",
    "   \n",
    "    signal = np.hstack([waveform, zero_padding])\n",
    "    \n",
    "    \n",
    "    winDuration=25e-3\n",
    "    audioOffsetDuration=10e-3\n",
    "    winLength=int(np.floor(samplerate*winDuration))\n",
    "    audioOffset=int(np.floor(samplerate*audioOffsetDuration))\n",
    "    overlap=winLength -audioOffset\n",
    "    window=hann(winLength,sym=False)\n",
    "    reta=[dsp_zcr(dsp.arm_mult_f32(x,window)) for x in sliding_window_view(signal,winLength)[::audioOffset,:]]\n",
    "    \n",
    "    # Reset state and filter\n",
    "    # We want to start with a clean filter each time we filter a new feature.\n",
    "    # So the filter state is reset each time.\n",
    "    blockSize=98\n",
    "    numTaps=10\n",
    "    stateLength = numTaps + blockSize - 1\n",
    "    dsp.arm_fir_init_f32(firf32,10,np.ones(10)/10.0,np.zeros(stateLength))\n",
    "    reta=dsp.arm_fir_f32(firf32,reta)\n",
    "    return(np.array(reta))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4d683590",
   "metadata": {},
   "source": [
    "Let's check that the feature is giving the same result as the reference implemenattion using linear algebra."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "1b926a1a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "feat=dsp_feature(data)\n",
    "plt.plot(feat)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f894f1f0",
   "metadata": {},
   "source": [
    "The feature code is working, so now we can implement the predict:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "a67a5b5b",
   "metadata": {},
   "outputs": [],
   "source": [
    "def dsp_predict(feat):\n",
    "    \n",
    "    res=dsp.arm_dot_prod_f32(coef_f32,feat)\n",
    "    res = res + intercept_f32\n",
    "    \n",
    "    if res[0]<0:\n",
    "        return(-1)\n",
    "    else:\n",
    "        return(0)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fccb1c17",
   "metadata": {},
   "source": [
    "And finally we can check the CMSIS-DSP behavior of the test patterns:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "84bac863",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<sklearn.metrics._plot.confusion_matrix.ConfusionMatrixDisplay at 0x287512beba0>"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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xo0bpwYNGqhGjRqKjY3VhAkTVFxcXOq6+fPnKzo6WjVq1FC/fv2Ul5fncP7NN99UfHy8/Pz8FBcXp9dee83pWABUDBIZ4E/C399f586ds39et26dMjIytHbtWq1cuVLFxcXq0qWLatasqU2bNumrr75SYGCgunbtar9v5syZSklJ0T/+8Q9t3rxZOTk5+uijjy753AceeEDvvPOOZs+erfT0dM2fP1+BgYGKjo7WBx98IEnKyMjQ8ePH9corr0iSpk+frsWLF2vevHn64YcfNGrUKN13331KTU2VdD7h6t27t3r06KG0tDQNHjxY48ePd/rPpGbNmkpJSdHevXv1yiuvaMGCBZo1a5bDNfv379eyZcu0YsUKrV69Wt99952GDh1qP79kyRJNnDhR06ZNU3p6up5//nlNmDBBixYtcjoeABXAAGA6AwcONHr27GkYhmHYbDZj7dq1hq+vrzFmzBj7+fDwcKOoqMh+zz//+U+jYcOGhs1ms7cVFRUZ/v7+xueff24YhmFERkYaM2bMsJ8vLi42rrnmGvuzDMMwOnbsaIwcOdIwDMPIyMgwJBlr164tM87169cbkoxTp07Z2woLC40aNWoYW7Zscbj24YcfNu655x7DMAzjqaeeMho1auRwfty4caX6+j1JxkcffXTR8y+99JLRqlUr++dnn33W8PT0NH7++Wd722effWZ4eHgYx48fNwzDMK677jpj6dKlDv0899xzRrt27QzDMIxDhw4Zkozvvvvuos8FUHGYIwOY1MqVKxUYGKji4mLZbDbde++9mjRpkv18kyZNHObF7Nq1S/v371fNmjUd+iksLNSBAweUl5en48ePq23btvZzXl5eat26danhpQvS0tLk6empjh07ljvu/fv36+zZs7r11lsd2s+dO6cWLVpIktLT0x3ikKR27dqV+xkXvPfee5o9e7YOHDiggoIClZSUKCgoyOGamJgYXX311Q7PsdlsysjIUM2aNXXgwAE9/PDDGjJkiP2akpISBQcHOx0PAPcjkQFMqlOnTnr99dfl4+OjqKgoeXk5/t85ICDA4XNBQYFatWqlJUuWlOrrL3/5y2XF4O/v7/Q9BQUFkqRVq1Y5JBDS+Xk/7rJ161YlJSVp8uTJ6tKli4KDg/Xuu+9q5syZTse6YMGCUomVp6en22IFcPlIZACTCggIUL169cp9fcuWLfXee++pdu3apaoSF0RGRmrbtm3q0KGDpPOVhx07dqhly5ZlXt+kSRPZbDalpqYqMTGx1PkLFSGr1Wpva9SokXx9fZWZmXnRSk58fLx94vIFX3/99R9/yd/YsmWL6tSpo6efftreduTIkVLXZWZm6tixY4qKirI/x8PDQw0bNlR4eLiioqJ08OBBJSUlOfV8AJWDyb5ANZGUlKSrrrpKPXv21KZNm3To0CFt2LBBI0aM0M8//yxJGjlypF544QUtX75cP/74o4YOHXrJPWCuvfZaDRw4UA899JCWL19u73PZsmWSpDp16shisWjlypX697//rYKCAtWsWVNjxozRqFGjtGjRIh04cEA7d+7UnDlz7BNo//a3v2nfvn168sknlZGRoaVLlyolJcWp71u/fn1lZmbq3Xff1YEDBzR79uwyJy77+flp4MCB2rVrlzZt2qQRI0aoX79+ioiIkCRNnjxZ06dP1+zZs/XTTz9p9+7dWrhwof7+9787FQ+AikEiA1QTNWrU0MaNGxUTE6PevXsrPj5eDz/8sAoLC+0VmieeeEL333+/Bg4cqHbt2qlmzZq66667Ltnv66+/rr59+2ro0KGKi4vTkCFDdObMGUnS1VdfrcmTJ2v8+PEKDw/X8OHDJUnPPfecJkyYoOnTpys+Pl5du3bVqlWrVLduXUnn56188MEHWr58uZo1a6Z58+bp+eefd+r73nnnnRo1apSGDx+u5s2ba8uWLZowYUKp6+rVq6fevXure/fuuu2229S0aVOH5dWDBw/Wm2++qYULF6pJkybq2LGjUlJS7LECqFoW42Kz+AAAAK5wVGQAAIBpkcgAAADTIpEBAACmRSIDAABMi0QGAACYFokMAAAwLRIZAABgWiQyAADAtEhkAACAaZHIAAAA0yKRAQAApvX/AYh1C3bZeWf7AAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_pred_ref = [dsp_predict(dsp_feature(x.signal)) for x in test_patterns]\n",
    "labels=[\"Unknown\"] + to_keep\n",
    "ConfusionMatrixDisplay.from_predictions(y_test, y_pred_ref,display_labels=labels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "bf0a23d9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8175"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.count_nonzero(np.equal(y_test,y_pred_ref))/len(y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0a80b698",
   "metadata": {},
   "source": [
    "We are getting very similar results to the reference implementation. Now let's explore fixed point."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f3bcc892",
   "metadata": {},
   "source": [
    "### Q31 implementation\n",
    "\n",
    "First thing to do is to convert the F32 values of the ML mode into Q31.\n",
    "But we need values in [-1,1]. So we rescale those values and keep track of the shift required to restore the original value.\n",
    "\n",
    "Then, we convert those rescaled values to Q31."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "beb7e364",
   "metadata": {},
   "outputs": [],
   "source": [
    "scaled_coef=clfb.best_estimator_.coef_ \n",
    "coef_shift=0\n",
    "while np.max(np.abs(scaled_coef)) > 1:\n",
    "    scaled_coef = scaled_coef / 2.0 \n",
    "    coef_shift = coef_shift + 1\n",
    "\n",
    "coef_q31=fix.toQ31(scaled_coef)\n",
    "\n",
    "scaled_intercept = clfb.best_estimator_.intercept_ \n",
    "intercept_shift = 0\n",
    "while np.abs(scaled_intercept) > 1:\n",
    "    scaled_intercept = scaled_intercept / 2.0 \n",
    "    intercept_shift = intercept_shift + 1\n",
    "    \n",
    "intercept_q31=fix.toQ31(scaled_intercept)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ed1cbb2c",
   "metadata": {},
   "source": [
    "Now we can implement the zcr and feature in Q31."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "7a64829c",
   "metadata": {},
   "outputs": [],
   "source": [
    "def dsp_zcr_q31(w):\n",
    "    m = dsp.arm_mean_q31(w)\n",
    "    # Negate can saturate so we use CMSIS-DSP function which is working on array (and we have a scalar)\n",
    "    m = dsp.arm_negate_q31(np.array([m]))[0]\n",
    "    w = dsp.arm_offset_q31(w,m)\n",
    "    \n",
    "    f=w[:-1]\n",
    "    g=w[1:]\n",
    "    k=np.count_nonzero(np.logical_and(np.logical_or(np.logical_and(f>0,g<0), np.logical_and(f<0,g>0)),g>f))\n",
    "    \n",
    "    # k < len(f) so shift should be 0 except when k == len(f)\n",
    "    # When k==len(f) normally quotient is 0x40000000 and shift 1 and we convert\n",
    "    # this to 0x7FFFFFF and shift 0\n",
    "    status,quotient,shift_val=dsp.arm_divide_q31(k,len(f))\n",
    "    if shift_val==1:\n",
    "        return(dsp.arm_shift_q31(np.array([quotient]),shift)[0])\n",
    "    else:\n",
    "        return(quotient)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "2aac9a63",
   "metadata": {},
   "outputs": [],
   "source": [
    "firq31 = dsp.arm_fir_instance_q31()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "a65003af",
   "metadata": {},
   "outputs": [],
   "source": [
    "def dsp_feature_q31(data):\n",
    "    samplerate=16000\n",
    "    input_len = 16000\n",
    "    \n",
    "    waveform = data[:input_len]\n",
    "    \n",
    "    zero_padding = np.zeros(\n",
    "      16000 - waveform.shape[0],\n",
    "      dtype=np.int32)\n",
    "   \n",
    "   \n",
    "    signal = np.hstack([waveform, zero_padding])\n",
    "    \n",
    "    \n",
    "    winDuration=25e-3\n",
    "    audioOffsetDuration=10e-3\n",
    "    winLength=int(np.floor(samplerate*winDuration))\n",
    "    audioOffset=int(np.floor(samplerate*audioOffsetDuration))\n",
    "    overlap=winLength-audioOffset\n",
    "    \n",
    "    window=fix.toQ31(hann(winLength,sym=False))\n",
    "    reta=[dsp_zcr_q31(dsp.arm_mult_q31(x,window)) for x in sliding_window_view(signal,winLength)[::audioOffset,:]]\n",
    "    \n",
    "    # Reset state and filter\n",
    "    blockSize=98\n",
    "    numTaps=10\n",
    "    stateLength = numTaps + blockSize - 1\n",
    "    dsp.arm_fir_init_q31(firq31,10,fix.toQ31(np.ones(10)/10.0),np.zeros(stateLength,dtype=np.int32))\n",
    "    reta=dsp.arm_fir_q31(firq31,reta)\n",
    "    return(np.array(reta))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e63b0ceb",
   "metadata": {},
   "source": [
    "Let's check the feature on the data to compare with the F32 version and check it is working:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "d59c2442",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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gNFohFarRVhYWLex0dHRMBqNMszSO6xevRr79u3Dnj17LnqM19z5zpw5g7feegtLlizBk08+iT179uDRRx+FVqvF/Pnz7de1p39neM375oknnoDJZEJycjLUajUsFgteeOEF3H333QDAa+5ivbm+RqMRUVFR3R7XaDQYMGCAw38GDGJIdg8//DAKCgqwfft2uafi1YqLi7F48WJs3rwZer1e7un4BKvVigkTJuBPf/oTAGDcuHEoKCjAihUrMH/+fJln550+/vhjfPjhh1i1ahXGjBmD/Px8PPbYY4iNjeU190LcTrqEyMhIqNXqi05mlJeXw2AwyDQr77No0SJs2LAB3333HQYNGmS/32AwwGw2o7a2ttt4Xv++27t3LyoqKnDVVVdBo9FAo9Fg69at+Mtf/gKNRoPo6GhecyeLiYnB6NGju903atQoFBUVAYD9uvLfGedZunQpnnjiCdx5551ITU3FPffcg8cffxzLly8HwGvuar25vgaDARUVFd0eb29vR01NjcN/BgxiLkGr1WL8+PHIycmx32e1WpGTk4PMzEwZZ+YdRFHEokWL8Omnn+Lbb7/FkCFDuj0+fvx4+Pn5dbv+x48fR1FREa9/H91www04dOgQ8vPz7bcJEybg7rvvtv83r7lzXX311ReVDjhx4gQGDx4MABgyZAgMBkO3a24ymbBr1y5e8z5qamqCStX9q02tVsNqtQLgNXe13lzfzMxM1NbWYu/evfYx3377LaxWKzIyMhx7w36lJXu51atXizqdTnzvvffEI0eOiL/4xS/EsLAw0Wg0yj01xXvooYfE0NBQccuWLWJZWZn91tTUZB/z4IMPigkJCeK3334r5uXliZmZmWJmZqaMs/Y+XU8niSKvubPt3r1b1Gg04gsvvCCePHlS/PDDD8WAgADxX//6l33Miy++KIaFhYmfffaZePDgQXHWrFk87tsP8+fPF+Pi4uxHrD/55BMxMjJS/O1vf2sfw2veP/X19eL+/fvF/fv3iwDEV155Rdy/f79YWFgoimLvru/06dPFcePGibt27RK3b98uDh8+nEesXeGvf/2rmJCQIGq1WnHSpEnizp075Z6SVwDQ4+0f//iHfUxzc7P4q1/9SgwPDxcDAgLE2267TSwrK5Nv0l7oh0EMr7nzff7552JKSoqo0+nE5ORkceXKld0et1qt4u9//3sxOjpa1Ol04g033CAeP35cptkqn8lkEhcvXiwmJCSIer1eTEpKEp966imxtbXVPobXvH++++67Hv/9nj9/viiKvbu+1dXV4rx588SgoCAxJCREXLBggVhfX+/wXARR7FLGkIiIiEghmBNDREREisQghoiIiBSJQQwREREpEoMYIiIiUiQGMURERKRIDGKIiIhIkRjEEBERkSIxiCEiIiJFYhBDREREisQghoiIiBSJQQwREREpEoMYIiIiUqT/D91MrlsAnPLrAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "feat=fix.Q31toF32(dsp_feature_q31(fix.toQ31(data)))\n",
    "plt.plot(feat)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ccd39f92",
   "metadata": {},
   "source": [
    "The Q31 feature is very similar to the F32 one so now we can implement the predict:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "0df93150",
   "metadata": {},
   "outputs": [],
   "source": [
    "def dsp_predict_q31(feat):\n",
    "    \n",
    "    res=dsp.arm_dot_prod_q31(coef_q31,feat)\n",
    "    \n",
    "    # Before adding the res and the intercept we need to ensure they are in the same Qx.x format\n",
    "    # The scaling applied to the coefs and to the intercept is different so we need to scale\n",
    "    # the intercept to take this into account\n",
    "    scaled=dsp.arm_shift_q31(np.array([intercept_q31]),intercept_shift-coef_shift)[0]\n",
    "    # Because dot prod output is in Q16.48\n",
    "    # and ret is on 64 bits\n",
    "    scaled = np.int64(scaled) << 17 \n",
    "    \n",
    "    res = res + scaled\n",
    "    \n",
    "   \n",
    "    \n",
    "    if res<0:\n",
    "        return(-1)\n",
    "    else:\n",
    "        return(0)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8691cb89",
   "metadata": {},
   "source": [
    "Now we can check the Q31 implementation on the test patterns:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "7f8787ac",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<sklearn.metrics._plot.confusion_matrix.ConfusionMatrixDisplay at 0x2874f18ffe0>"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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VUtOTfb19PTU3XffzVuuAQC4jlycI+PqYUZOr1q65ZZbdPjw4bKIBQAAwClOJzJTpkzR6NGjtXLlSp06dUq5ubkOBwAAqACVcOm15MQcmcmTJ+tvf/ubunTpIkm67777HF5VYBiGLBaLrFar+6MEAABXVonnyJQ6kZk0aZKeeOIJrV+/vizjAQAAKLVSJzKGUZKqxcfHl1kwAADAeWyIV0pXe+s1AACoIAwtlU69evV+N5nJyspyKSAAAIDSciqRmTRp0iU7+wIAgIrF0FIp3X///apevXpZxQIAAK5FJR5aKvU+MsyPAQAA1xunVy0BAIDrTCWuyJQ6kbHZbGUZBwAAuEbMkQEAAOZViSsyTr9rCQAA4HpBRQYAALOrxBUZEhkAAEyuMs+RYWgJAACYFhUZAADMjqElAABgVgwtAQAAmBCJDAAAZme46Sglq9Wq8ePHq3bt2vL399fNN9+sF154weEtAIZhaMKECYqIiJC/v78SExN14MAB17/rb5DIAABgduWcyLz00kt666239MYbbyg1NVUvvfSSZsyYoTlz5tivmTFjhmbPnq158+Zp69atCggIUMeOHZWfn+/69/0V5sgAAACnbN68Wd26ddM999wjSapVq5bef/99/fDDD5JKqjGzZs3Sc889p27dukmSlixZoho1amj58uW6//773RYLFRkAAEzO4qZDknJzcx2OgoKCS553++23a926dfr5558lSbt379a3336rzp07S5KOHDmijIwMJSYm2u8JCQlR69attWXLFrd+dyoyAACYnRuXX0dFRTk0P//885o4caJD27hx45Sbm6vY2Fh5enrKarVq6tSpSkpKkiRlZGRIkmrUqOFwX40aNezn3IVEBgAAk3Pn8uv09HQFBwfb2319fS+5dtmyZXrvvfe0dOlSNWzYULt27dKIESMUGRmpfv36uRaIk0hkAACAXXBwsEMiczlPP/20xo0bZ5/r0qhRIx07dkzTp09Xv379FB4eLknKzMxURESE/b7MzEw1bdrUrfEyRwYAALMr51VL58+fl4eHYwrh6ekpm80mSapdu7bCw8O1bt06+/nc3Fxt3bpVbdq0uZZveEVUZAAA+CMox515u3btqqlTpyo6OloNGzbUjz/+qNdee02PPfaYJMlisWjEiBGaMmWK6tatq9q1a2v8+PGKjIxU9+7d3RoLiQwA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E6NBgwbp008/pUIIUyGRwXUnODhYOTk5l7RnZ2crJCTE/tnb29vhvMVikc1mc2i78847ZbVatWzZsss+qzR9XE27du109uxZ7dy5Uxs3bnRIZFJSUhQZGam6dete8ZkWi0WSnHom8FvNmjVTkyZNtGTJEu3YsUP79u1T//79JUl5eXmaNGmSdu3aZT/27NmjAwcOyM/PT1FRUUpLS9Obb74pf39/DR48WO3atbvqfDPgeuJV0QEAv1W/fn2tWbPmkvadO3eqXr16TvV16623aujQoerUqZO8vLw0evToUt8bFxen9PR0paen26sy+/fvV3Z2tho0aCBJCg0NVePGjfXGG2/I29tbsbGxql69uvr27auVK1deMj8GKCsDBw7UrFmzdOLECSUmJtp/Zps3b660tDTVqVPnivf6+/ura9eu6tq1q4YMGaLY2Fjt2bNHzZs3L6/wgWtGIoPrzpNPPqk33nhDw4YN08CBA+Xr66tVq1bp/fff14oVK5zu7/bbb9cXX3yhzp07y8vL67J71FxOYmKiGjVqpKSkJM2aNUvFxcUaPHiw4uPj1bJlS/t1CQkJmjNnjnr16iVJCgsLU1xcnD788EPNnTvX6XiBa/Hggw9q9OjRWrBggZYsWWJvnzBhgu69915FR0erV69e8vDw0O7du7V3715NmTJFycnJslqtat26tapUqaJ3331X/v7+qlmzZgV+G6D0GFrCdScmJkYbN27UTz/9pMTERLVu3VrLli3TRx99pE6dOl1Tn23bttWqVav03HPPac6cOaW6x2Kx6LPPPlPVqlXVrl07JSYmKiYmRh9++KHDdfHx8bJarQ5zYRISEi5pA8pSSEiIevbsqcDAQHXv3t3e3rFjR61cuVJr1qxRq1atdNttt2nmzJn2RCU0NFQLFizQHXfcocaNG+vrr7/WihUrVK1atQr6JoBzLIZhGBUdBADAdR06dFDDhg01e/bsig4FKDckMgBgcmfOnNGGDRvUq1cv7d+/X/Xr16/okIBywxwZADC5Zs2a6cyZM3rppZdIYlDpUJEBAACmxWRfAABgWiQyAADAtEhkAACAaZHIAAAA0yKRAQAApkUiA+Cq+vfv77BTbEJCQqlf8+BOGzZskMViUXZ29hWvsVgsWr58ean7nDhxopo2bepSXEePHpXFYtGuXbtc6gfAtSGRAUyof//+slgs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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_pred_ref = [dsp_predict_q31(dsp_feature_q31(fix.toQ31(x.signal))) for x in test_patterns]\n",
    "labels=[\"Unknown\"] + to_keep\n",
    "ConfusionMatrixDisplay.from_predictions(y_test, y_pred_ref,display_labels=labels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "500da0b5",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.825"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.count_nonzero(np.equal(y_test,y_pred_ref))/len(y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e4cb5d66",
   "metadata": {},
   "source": [
    "The score is as good as the F32 implementation."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "22e5033e",
   "metadata": {},
   "source": [
    "### Q15 Implementation\n",
    "\n",
    "It is the same as Q31 but using Q15 functions."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "cf7674a2",
   "metadata": {},
   "outputs": [],
   "source": [
    "scaled_coef=clfb.best_estimator_.coef_ \n",
    "coef_shift=0\n",
    "while np.max(np.abs(scaled_coef)) > 1:\n",
    "    scaled_coef = scaled_coef / 2.0 \n",
    "    coef_shift = coef_shift + 1\n",
    "\n",
    "coef_q15=fix.toQ15(scaled_coef)\n",
    "\n",
    "scaled_intercept = clfb.best_estimator_.intercept_ \n",
    "intercept_shift = 0\n",
    "while np.abs(scaled_intercept) > 1:\n",
    "    scaled_intercept = scaled_intercept / 2.0 \n",
    "    intercept_shift = intercept_shift + 1\n",
    "    \n",
    "intercept_q15=fix.toQ15(scaled_intercept)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "id": "3e2258ca",
   "metadata": {},
   "outputs": [],
   "source": [
    "def dsp_zcr_q15(w):\n",
    "    m = dsp.arm_mean_q15(w)\n",
    "    # Negate can saturate so we use CMSIS-DSP function which is working on array (and we have a scalar)\n",
    "    m = dsp.arm_negate_q15(np.array([m]))[0]\n",
    "    w = dsp.arm_offset_q15(w,m)\n",
    "    \n",
    "    f=w[:-1]\n",
    "    g=w[1:]\n",
    "    k=np.count_nonzero(np.logical_and(np.logical_or(np.logical_and(f>0,g<0), np.logical_and(f<0,g>0)),g>f))\n",
    "    \n",
    "    # k < len(f) so shift should be 0 except when k == len(f)\n",
    "    # When k==len(f) normally quotient is 0x4000 and shift 1 and we convert\n",
    "    # this to 0x7FFF and shift 0\n",
    "    status,quotient,shift_val=dsp.arm_divide_q15(k,len(f))\n",
    "    if shift_val==1:\n",
    "        return(dsp.arm_shift_q15(np.array([quotient]),shift)[0])\n",
    "    else:\n",
    "        return(quotient)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "345c8f73",
   "metadata": {},
   "outputs": [],
   "source": [
    "firq15 = dsp.arm_fir_instance_q15()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "id": "6a974f45",
   "metadata": {},
   "outputs": [],
   "source": [
    "def dsp_feature_q15(data):\n",
    "    samplerate=16000\n",
    "    input_len = 16000\n",
    "    \n",
    "    waveform = data[:input_len]\n",
    "    \n",
    "    zero_padding = np.zeros(\n",
    "      16000 - waveform.shape[0],\n",
    "      dtype=np.int16)\n",
    "   \n",
    "   \n",
    "    signal = np.hstack([waveform, zero_padding])\n",
    "    \n",
    "    \n",
    "    winDuration=25e-3\n",
    "    audioOffsetDuration=10e-3\n",
    "    winLength=int(np.floor(samplerate*winDuration))\n",
    "    audioOffset=int(np.floor(samplerate*audioOffsetDuration))\n",
    "    overlap=winLength - audioOffset\n",
    "    \n",
    "    window=fix.toQ15(hann(winLength,sym=False))\n",
    "    reta=[dsp_zcr_q15(dsp.arm_mult_q15(x,window)) for x in sliding_window_view(signal,winLength)[::audioOffset,:]]\n",
    "    \n",
    "    # Reset state and filter\n",
    "    blockSize=98\n",
    "    numTaps=10\n",
    "    stateLength = numTaps + blockSize - 1\n",
    "    dsp.arm_fir_init_q15(firq15,10,fix.toQ15(np.ones(10)/10.0),np.zeros(stateLength,dtype=np.int16))\n",
    "    reta=dsp.arm_fir_q15(firq15,reta)\n",
    "    return(np.array(reta))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "18a33368",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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s2iTmJhobvPDic1tbW2oqanp8nO9vb3h7e28W027E4lEggcTwoGE28+NIiIichSrVlcpFAokJSUhNzfX/JzRaERubi5SU1M7fU9qaqpFewDIyckxt4+OjoZGo7Foo9PpsH//fnOb1NRU1NbWIj8/39xmx44dMBqNSElJseYrEBERkYewergqMzMTc+bMQXJyMsaOHYvVq1ejsbERc+fOBQDMnj0bERERyMrKAgAsWrQIEyZMwKpVqzB16lRs2rQJhw4dwvr16wG09wK8+OKL+M1vfoOYmBhER0fj9ddfR3h4ODIyMgAAw4YNw+TJkzF//nysW7cOra2tWLBgAWbMmNGtlVVERETkeawOOdOnT0dVVRWWLVsGrVaLxMREZGdnmycOl5aWQiq93kE0fvx4bNy4EUuXLsWSJUsQExODrVu3Ii4uztzmlVdeQWNjI55++mnU1tbirrvuQnZ2NpRKpbnNhg0bsGDBAkyaNAlSqRTTpk3Du+++25vvTkRERG6MB3QSERGR0+rN728eIU1ERERuiSGHiIiI3BJDDhEREbklhhwiIiJySww5RERE5JYYcoiIiMgtMeQQERGRW2LIISIiIrfEkENERERuyepjHVyVaWNnnU4nciVERETUXabf2z05oMFjQk59fT0AIDIyUuRKiIiIyFr19fVQq9VWvcdjzq4yGo24dOkSAgICIJFIbHptnU6HyMhIlJWV8VwsB+E9dzzec8fjPXc83nPHu909FwQB9fX1CA8PtzgAvDs8pidHKpWif//+dv0MlUrF/1M4GO+54/GeOx7vuePxnjvere65tT04Jpx4TERERG6JIYeIiIjcEkOODXh7e2P58uXw9vYWuxSPwXvueLznjsd77ni8545nz3vuMROPiYiIyLOwJ4eIiIjcEkMOERERuSWGHCIiInJLDDlERETklhhyemnt2rWIioqCUqlESkoKDhw4IHZJbiMrKwtjxoxBQEAAQkNDkZGRgZKSEos2zc3NeP755xEcHAx/f39MmzYNFRUVIlXsflauXAmJRIIXX3zR/Bzvue2Vl5fjySefRHBwMHx8fBAfH49Dhw6ZXxcEAcuWLUO/fv3g4+ODtLQ0nD59WsSKXZvBYMDrr7+O6Oho+Pj44I477sAbb7xhcTYS73nv7Nq1Cz/5yU8QHh4OiUSCrVu3WrzenftbU1ODWbNmQaVS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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "feat=fix.Q15toF32(dsp_feature_q15(fix.toQ15(data)))\n",
    "plt.plot(feat)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "9ad998ad",
   "metadata": {},
   "outputs": [],
   "source": [
    "def dsp_predict_q15(feat):\n",
    "    \n",
    "    res=dsp.arm_dot_prod_q15(coef_q15,feat)\n",
    "    \n",
    "    scaled=dsp.arm_shift_q15(np.array([intercept_q15]),intercept_shift-coef_shift)[0]\n",
    "    # Because dot prod output is in Q34.30\n",
    "    # and ret is on 64 bits\n",
    "    scaled = np.int64(scaled) << 15 \n",
    "    \n",
    "    res = res + scaled\n",
    "    \n",
    "   \n",
    "    \n",
    "    if res<0:\n",
    "        return(-1)\n",
    "    else:\n",
    "        return(0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "501be275",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<sklearn.metrics._plot.confusion_matrix.ConfusionMatrixDisplay at 0x287525d09b0>"
      ]
     },
     "execution_count": 54,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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U35+vho3bqyAgIDyiA8AAPyZSvwcmct+IJ63t7caN27szlgAAACc4nQi07FjR1ksF1/Z/OWXX7oUEAAAcJI7tk9XlopMixYtHD4XFxdr586d+u6775ScnOyuuAAAQFkxtVR206ZNu2D/+PHjlZ+f73JAAAAAZXVZ71q6kAcffFD/+te/3DUcAAAoq0r8HBm3vf168+bN8vX1dddwAACgjNh+7YQePXo4fDYMQ8eOHdO2bds0duxYtwUGAADwZ5xOZIKCghw+e3h4qGHDhpo4caLuuOMOtwUGAADwZ5xKZKxWqx555BE1bdpU1atXL6+YAACAMyrxriWnFvt6enrqjjvu4C3XAABcRc6tkXG1mZHTu5auv/56HThwoDxiAQAAcIrTicykSZM0cuRIrVixQseOHVNeXp5DAwAAFaASbr2WnFgjM3HiRD355JO68847JUl33323w6sKDMOQxWKR1Wp1f5QAAODiKvEamTInMhMmTNDf//53rVu3rjzjAQAAKLMyJzKGUZqqdejQodyCAQAAzuOBeGV0qbdeAwCACsLUUtk0aNDgT5OZ7OxslwICAAAoK6cSmQkTJpz3ZF8AAFCxmFoqoz59+qhmzZrlFQsAALgclXhqqczPkWF9DAAAuNo4vWsJAABcZSpxRabMiYzNZivPOAAAwGVijQwAADCvSlyRcfpdSwAAAFcLKjIAAJhdJa7IkMgAAGBylXmNDFNLAADAtKjIAABgdkwtAQAAs2JqCQAAwISoyAAAYHZMLQEAANOqxIkMU0sAAMC0qMgAAGByll+bq2OYERUZAADMznBTKyOr1aqxY8eqbt268vPz03XXXafnn39ehvHbIIZhaNy4cQoPD5efn5/i4+O1d+9e17/rH5DIAABgcue2X7vayurll1/WG2+8oVmzZiktLU0vv/yypkyZopkzZ9rPmTJlimbMmKE5c+Zoy5Yt8vf3V0JCggoKCtz63ZlaAgAATvnqq6+UmJiorl27SpLq1Kmj9957T998842k0mrM9OnT9eyzzyoxMVGStHDhQoWGhmrp0qXq06eP22KhIgMAgNm5cWopLy/PoRUWFp53u5tvvllr167Vjz/+KEnatWuXNm3apC5dukiSMjIylJWVpfj4ePs1QUFBio2N1ebNm9361anIAADwV+Cm7dORkZEOn5977jmNHz/eoW/MmDHKy8tT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ORc9x2KxaOnSpWUec/z48WrRooVLcR08eFAWi0U7d+50aRwAl4dEBjChvn37ymKxyGKxyNvbW/Xq1dPEiRNVUlJS7vf++OOP9fzzz5fp3LIkHwDgCh6IB5hU586dtWDBAhUWFuqzzz7ToEGDVKVKFT399NPnnVtUVCRvb2+33DckJMQt4wCAO1CRAUzKx8dHYWFhql27th5//HHFx8dr2bJlkn6bDnrhhRcUERFhf9prZmam7rvvPgUHByskJESJiYk6ePCgfUyr1aoRI0YoODhYNWrU0KhRo/THZ2b+cWqpsLBQo0ePVmRkpHx8fFSvXj299dZbOnjwoDp27ChJql69uiwWi/r27StJstlsmjx5surWrSs/Pz81b95c//73vx3u89lnn6lBgwby8/NTx44dHeIsq9GjR6tBgwaqWrWqoqOjNXbsWBUXF5933ty5cxUZGamqVavqvvvuU25ursPx+fPnKyYmRr6+vmrUqJFef/11p2MBUD5IZIC/CD8/PxUVFdk/r127Vunp6VqzZo1WrFih4uJiJSQkqFq1atq4caP++9//KiAgQJ07d7ZfN3XqVKWkpOhf//qXNm3apOzsbH3yySeXvO/DDz+s9957TzNmzFBaWprmzp2rgIAARUZG6qOPPpIkpaen69ixY3rttdckSZMnT9bChQs1Z84cff/99xo+fLgefPBBpaamSipNuHr06KFu3bpp586d6t+/v8aMGeP0r0m1atWUkpKiPXv26LXXXtO8efM0bdo0h3P27dunJUuWaPny5Vq1apW+/fZbDRw40H580aJFGjdunF544QWlpaXpxRdf1NixY/X22287HQ+AcmAAMJ3k5GQjMTHRMAzDsNlsxpo1awwfHx9j5MiR9uOhoaFGYWGh/Zp33nnHaNiwoWGz2ex9hYWFhp+fn/Gf//zHMAzDCA8PN6ZMmWI/XlxcbFx77bX2exmGYXTo0MEYOnSoYRiGkZ6ebkgy1qxZc8E4161bZ0gyTp48ae8rKCgwqlatanz11VcO5/br18+4//77DcMwjKefftpo3Lixw/HRo0efN9YfSTI++eSTix5/5ZVXjNatW9s/P/fcc4anp6fx008/2fs+//xzw8PDwzh27JhhGIZx3XXXGYsXL3YY5/nnnzfatm1rGIZhZGRkGJKMb7/99qL3BVB+WCMDmNSKFSsUEBCg4uJi2Ww2PfDAAxo/frz9eNOmTR3WxezatUv79u1TtWrVHMYpKCjQ/v37lZubq2PHjik2NtZ+zMvLS23atDlveumcnTt3ytPTUx06dChz3Pv27dOZM2d0++23O/QXFRWpZcuWkqS0tDSHOCSpbdu2Zb7HOR988IFmzJih/fv3Kz8/XyUlJQoMDHQ4JyoqSrVq1XK4j81mU3p6uqpVq6b9+/erX79+GjBggP2ckpISBQUFOR0PAPcjkQFMqmPHjnrjjTfk7e2tiIgIeXk5/nH29/d3+Jyfn6/WrVtr0aJF5431t7/97bJi8PPzc/qa/Px8SdLKlSsdEgipdN2Pu2zevFlJSUmaMGGCEhISFBQUpPfff19Tp051OtZ58+adl1h5enq6LVYAl49EBjApf39/1atXr8znt2rVSh988IFq1qx5XlXinPDwcG3ZskXt27eXVFp52L59u1q1anXB85s2bSqbzabU1FTFx8efd/xcRchqtdr7GjduLB8fHx0+fPiilZyYmBj7wuVzvv766z//kr/z1VdfqXbt2nrmmWfsfYcOHTrvvMOHD+vo0aOKiIiw38fDw0MNGzZUaGioIiIidODAASUlJTl1fwBXBot9gUoiKSlJ11xzjRITE7Vx40ZlZGRo/fr1GjJkiH766SdJ0tChQ/XSSy9p6dKl+uGHHzRw4MBLPgOmTp06Sk5O1qOPPqqlS5fax1yyZIkkqXbt2rJYLFqxYoV+/vln5efnq1q1aho5cqSGDx+ut99+W/v379eOHTs0c+ZM+wLav//979q7d6+eeuoppaena/HixUpJSXHq+9avX1+HDx/W+++/r/3792vGjBkXXLjs6+ur5ORk7dq1Sxs3btSQIUN03333KSwsTJI0YcIETZ48WTNmzNCPP/6o3bt3a8GCBfrnP//pVDwAygeJDFBJVK1aVRs2bFBUVJR69OihmJgY9evXTwUFBfYKzZNPPqmHHnpIycnJatu2rapVq6Z77rnnkuO+8cYb6tWrlwYOHKhGjRppwIABOn36tCSpVq1amjBhgsaMGaPQ0FANHjxYkvT8889r7Nixmjx5smJiYtS5c2etXLlSdevWlVS6buWjjz7S0qVL1bx5c82ZM0cvvviiU9/37rvv1vDhwzV48GC1aNFCX331lcaOHXveefXq1VOPHj1055136o477lCzZs0ctlf3799f8+fP14IFC9S0aVN16NBBKSkp9lgBVCyLcbFVfAAAAFc5KjIAAMC0SGQAAIBpkcgAAADTIpEBAACmRSIDAABMi0QGAACYFokMAAAwLRIZAABgWiQyAADAtEhkAACAaZHIAAAA0/r/p645yaaN4egAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "y_pred_ref = [dsp_predict_q15(dsp_feature_q15(fix.toQ15(x.signal))) for x in test_patterns]\n",
    "labels=[\"Unknown\"] + to_keep\n",
    "ConfusionMatrixDisplay.from_predictions(y_test, y_pred_ref,display_labels=labels)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "id": "511f5d36",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.835"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.count_nonzero(np.equal(y_test,y_pred_ref))/len(y_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7c1ce084",
   "metadata": {},
   "source": [
    "Q15 version is as good as other versions so we are selecting this implementation to run on the Arduino (once it has been converted to C)."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
